我想将下面的 String hex 转换为 Int (16)。
a6 5f de 57
我做了什么,但我不知道这是正确的方法,我无法验证数字是否正确。
byte[] rec = new byte[20];
DatagramPacket pRec = new DatagramPacket(rec, rec.length);
socket.receive(pRec);
String tData = "";
for(int i = 0; i < 20; i++){
tData += String.format("%02x", rec[i]);
}
数据包的输出:
ffffffff730aa65fde5700000000000000000000
现在我必须跳过前 6 个字节 [ffffffff730a],我需要剩下的 4 个字节 [a65fde57]。注意:[00000000000000000000] 是 NULL 因为缓冲区的长度。
System.out.println( hexToInt(tData, 6, 10) );
private Integer hexToInt(String str, int start, int end){
String t = str.substring(start, end);
char[] ch = t.toCharArray();
String res = "";
for(int i = 0; i < end-start; i += 2){
res += Integer.parseInt(ch[i]+ch[i+1]+"", 16);
}
return Integer.parseInt(res);
}
结果是:
516262
这是将十六进制字符串转换为整数的正确方法吗?结果是否正确?