以下の 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]);
}
パケットからの出力:
ffffffff730aa65fde570000000000000000000
そして今、最初の 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
これは、16 進文字列を int に変換する正しい方法ですか? 結果は正しいですか?