我正在编写一个Android应用程序,它将从另一个设备读取数据,收到的数据是一个字节数组,如:
byte [] data = {X,X,X,X,H,H,X,X};
上面的HH是有符号字节的ASCII十六进制表示。例如" 0C"表示值12," FB"代表值-5," FF"是-1
我通过以下方式从数据中收到HH:
byte[] HH_array = Arrays.copyOfRange(data, 4, 6);
然后将其更改为String:
String HH_str = new String(HH_array);
获得HH值:
int HH_int = (Integer.parseInt(HH_str, 16));
然而,这里整数值变为正数,即使原始HH是负数。
我想问一下如何更改数据数组HH_array中收到的有符号字节,并将其存储到有符号的int?
答案 0 :(得分:0)
我想回答我的问题,我必须在最后添加以下代码:
x-content-type-options:nosniff
x-frame-options:SAMEORIGIN
x-ua-compatible:IE=edge, chrome=1
x-xss-protection:1; mode=block
首先比较第8位以检查它是否为负数。然后它转换为2的完全值。
感谢一位回答“几乎正确”答案的成员,这些答案让我得到了我想要的东西。不幸的是,他删除了他的答案,我忘记了他的名字。
答案 1 :(得分:-1)
使用此:
byte b = 0xFF;
int i = (int)(sbyte)b;