2016-07-18 7 views
0

私は私のカスタムUSBデバイスで動作します。私はバイト配列からそれを取得します。ここlong to hexString、間違ったサイズ

tag = Long.toHexString(tagValue); 

しかし、私が持っている問題:

byte[] receivedTag = connector.receive(512); 
         String tag = null; 
         if (receivedTag != null) { 
          long tagValue = ByteBuffer.wrap(receivedTag).getLong(); 

次は私が16進文字列に変換したい:私はので、私はこのように、まずロングに変換16進文字列としてこの配列を表示します。受信したタグには約400バイト(私はデバッグ時にチェックしました)がありますが、変換するとタグは長さがわずか16文字(8バイト、正しい)です。何故ですか ?

+0

http://stackoverflow.com/questions/9655181/how-to-convert-a-byte-array-to-a-hex-string-in-javaこのリンクをチェックしてください –

+0

私はそれを見つけましたが、解決策は私には正しいです – Bartos

+0

役に立つ情報を検討する。ロングは固定サイズ64ビット(8バイト)です。 –

答えて

1
public static String bytesToHex(byte[] in) { 
    final StringBuilder builder = new StringBuilder(); 
    for(byte b : in) { 
     builder.append(String.format("%02x", b)); 
    } 
    return builder.toString(); 
} 

//使用することを検討して、この

+0

今の方が良いですが、まだ変換する必要があるバイトの約半分が残っています。残りは0です(そうすべきではありません)。 – Bartos

関連する問題