2016-03-23 34 views
-1

我寫Android應用將來自另一設備讀取的數據,接收到的數據是一個字節數組,如:的Java(機器人):轉換符號字節到int

字節[]數據= {X, X,X,X,H,H,X,X};

上面的HH是帶符號字節的ASCII十六進制表示。例如,「0℃」表示的值12,「FB」表示值-5,「FF」是-1

我通過接收HH從數據:

byte[] HH_array = Arrays.copyOfRange(data, 4, 6); 

然後它改變爲字符串:

String HH_str = new String(HH_array); 

要獲取HH值:

int HH_int = (Integer.parseInt(HH_str, 16)); 

然而,這裏的整數值變成正數,甚至原來的HH是負。

我想問如何更改數據數組HH_array中接收到的有符號字節,並將其存儲到帶符號的int?

回答

-1

使用此:

byte b = 0xFF; 
int i = (int)(sbyte)b; 
0

我想回答我的問題,我必須在最後添加以下代碼:

if((HH_int &0x80) > 0) { 
    HH_int = -(0x80-(HH_int &0x7f)); 
} 

首先,它比較的第8位,以檢查它是否是一個負數。然後它轉換爲2的補碼值。

非常感謝您的會員回答了一個「幾乎正確」的答案,這個答案讓我得到了我想要的東西。不幸的是,他刪除了他的答案,我忘了他的名字。