2013-09-16 197 views
2

我正在使用ZigBee,我從一個終端設備的傳感器接收數據,並且我想從十六進制轉換爲整數。數據是從4字節,這個信息是關於電池,我得到的將是這樣的一個例子:「00 00 00 e1」(但沒有空白),我需要通過這個電壓,但首先我想我需要把它傳遞給int。十六進制爲整數(4字節)

任何人都可以幫助我嗎?我正在爲Android做我的應用程序。

預先感謝您。

+0

你接收一個字符串(' 「000000e1」')或字節數組('0×00,0×00,0×00,0xe1')?您將最終使用不同的代碼將每個表示處理爲一個大端的32位無符號整數。 – tomlogic

回答

3
int n = (int)Long.parseLong(st.replaceAll("\\s+",""), 16); 

( st是你的字符串)。兩件事:

replaceAll去掉任何空格。

我通過Long解析器去規避NumberFormatExceptions爲陰性

+0

謝謝你的迴應,當我收到我沒有空白的信息時,你告訴我你傳遞了8個字符,並且我將函數轉換爲int? – Despotars

+0

您的示例包含空格,因此我認爲您需要解析該空白。如果沒有空格,你可以只用'int n =(int)Long.parseLong(st,16);',再次通過'Long'來繞過'NumberFormatExceptions'的負數。 – Bathsheba

+0

好的,非常感謝! :-) – Despotars

3

使用Integer.parseInt()此:

將字符串參數如在由第二個參數

實施例中指定的基數中的一個符號的整數:

Integer.parseInt("-FF", 16) // pass 16 to indicate an hexadecimal value 
=> -255 
+0

感謝您的回覆,那麼,我可以使用這個函數將數據轉換爲int,那麼只有我必須將它傳遞給電壓不? – Despotars

+1

@Despotars我不明白你的問題。該函數將從十六進制轉換爲整型。同樣,函數'Integer.toString()'將從int轉換爲十六進制。根據需要使用它們。 –

1
Integer.parseInt("ff0000", 16) 
+0

謝謝你的迴應!我要去嘗試一下 – Despotars

相關問題