十六进制值的十进制十进制表示错误

时间:2014-08-19 09:08:23

标签: java android decimal bytearray hex

我在HexaDecimal Representation中有一个小数据集 -

  

byte [] bb = new byte [] {(byte)0x7D,(byte)0x44,(byte)0xCC};

为了理解值在十进制表示中的来源,我做了以下几点 -

Log.i("DECIMAL VALUE of 7D>>", buf[i] + "");
Log.i("DECIMAL VALUE of 44>>", buf[i+1] + "");
Log.i("DECIMAL VALUE of CC>>", buf[i+2] + "");

它印刷的是 -

DECIMAL VALUE of 7D>> 125

DECIMAL VALUE of 44>> 68

DECIMAL VALUE of CC>> -52

查看网站 -

http://hextodecimal.com/index.php?hex=CC

字节CC的十进制表示为204

在我的应用程序中,我只是因为Index Out Of Bounds Exception的索引在边界中不存在而得到-52

那么这个字节如何变为负面,什么是明确的解决方案。

1 个答案:

答案 0 :(得分:1)

Java中的字节是有符号的,即它们的范围是-128到127.如果要表示数字204,请使用int

int[] bb = new int[] { 0x7D, 0x44, 0xCC };

如果您确实希望将数据存储为字节,则可以将其转换为unsigned,然后使用它在数组中进行索引。

yourArray[bb[1] && 0xFF]

请参阅以下问题:How to Convert Int to Unsigned Byte and Back