- 論壇徽章:
- 0
|
perl新手,正在用Tk做一個界面。
讀一個二進制文件的時候,遇到一個問題,查了好多資料,也沒解決。具體是這樣:
先把240字節(jié)的數(shù)據(jù)讀到一個buffer里:
if(!read(BIN_FILE,$t_header,240)){
print "error !";
}
這段240字節(jié)dump出來就是這樣:
1:00000000 00000001 0000001B 00000000
005:00000000 00000012 00000001 00010000
009:00010000 00000000 00000000 00000000
013:00000000 00000000 00000000 00000000
017:00000000 D8F0FF9C 01CEB432 19065BC0
021:00000000 00000000 00030000 00000000
025:00000000 00000000 00000000 FF9C0012
029:0012041B 07D00000 00000000 00000000
033:00000000 00000000 00000000 00000000
037:00000000 00000000 00000000 00000000
041:00000000 00000000 00000000 00000000
045:00000000 00000000 00000000 00000000
049:00000000 00000000 00000000 00000000
053:00000000 00000000 00000000 00000000
057:00000000 00000000 00000000 00000000
我要讀的就是紅色的部分FF9C,這樣讀的:
($tmp,$s_t,$tmp)=unpack("H216 H4 H*",$t_header);
把FF9C讀到$s_t里,
FF9C的值本來是-100,可打印出來卻不是:
printf "start time=%d\n",hex($s_t);
結(jié)果是:
start time=65436
查了幾天的資料,還是沒搞明白。如果讀的短整形數(shù)是正值,
則打印出來的就是正確的。
哪位明白高手,指點一下 |
|