Java(Android):将signed byte转换为int

时间:2016-03-23 02:57:33

标签: java android

我正在编写一个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?

2 个答案:

答案 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;