Monday, August 17, 2009

java的byte to int

今天下午在作一些byte operation時
有field是開頭用2byte來指定這個data的size

例如說 c000這是little endian的
所以實際是 00co

然後要拿這length來作事情時
b[0] | b[1] <<> char是unsigned了吧
不過很麻煩 用時還要把他轉int
最後發現可以用 b[0] & 0xff 這樣
主要是 0xff 他是一個int , 0x000000ff
所以b[0]也會被promoted為int 雖然int也是signed
但跟0x000000ff AND後sign bit 就不見了

不過也有看到比較雜的code
((b0 & 0x80) == 0x80 ? (b0 & 0x7F) + 0x80 : b0);
這也能把byte轉成unsigned的
原理是一樣的
但似乎多作了很多事..........


真的要買hack's delight來看了

No comments: