将表示为十六进制字符串的字节数组转换为正确的int

时间:2017-06-12 08:38:09

标签: java arrays hex byte buffer

我有一个字节数组,

[102,100,51,52,48,48]

其中包含十六进制字符串表示:

" fd3400"

如果我将其转换为数字,则显示为16593920。

但是,当我使用下面的代码段转换它时

int iSec = ByteBuffer.wrap(bSec).order(ByteOrder.LITTLE_ENDIAN).getInt();

我得到结果:875783270。字节应该是LSB格式,但我似乎无法得到正确的值,如875783270!= 16593920.我有点困惑使用这些数据格式。

1 个答案:

答案 0 :(得分:3)

字节数组包含字符串的字节表示。

ASCII中:

  • 102 =='f'
  • 100 =='d'
  • 51 =='3'
  • 52 =='4'
  • 48 =='0'

您应该从字节数组转换为字符串,然后使用基数16(十六进制)解析该字符串。

String hex = new String(arr, "ASCII"); //fd3400
int number = Integer.valueOf(hex, 16).intValue(); //16593920