Javaでは、バイト(16進数など)の16進文字列表現をバイト値に変換するにはどうすればよいですか?例えば16進文字列をJavaのバイトに変換する
:
byte b = ConvertHexStringToByte("1e");
Javaでは、バイト(16進数など)の16進文字列表現をバイト値に変換するにはどうすればよいですか?例えば16進文字列をJavaのバイトに変換する
:
byte b = ConvertHexStringToByte("1e");
Integer.parseInt(str, 16);
私はそれを試みましたが、それはバイトではなくintを生成します。つまり、 "1e"の場合、バイトにキャストしても、0x1eではなく30が得られます。 – phpscriptcoder
byte型のときに同じように格納されている値30と0x1eのバイトを区別するにはどうすればよいですか? –
@phpscriptcoder:いいえ、あなたは1eを得るでしょう。これを試してみてください:String roundtrip = Integer.toHexString(Integer.parseInt(str、16)); – erickson
Byte.parseByte
は、文字列表現を解析することによってbyte
を返します。
つバイトの16進表現を解析できるように(String, int)
署名と方法を使用して、基数は、16として指定することができる。
Byte.parseByte("1e", 16);
危険!このメソッドは、負のバイト値、たとえば "AD"を解析できません。 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6259307を参照してください。 Integer.parseInt –
@Dave Lを使用する方が良いです。評価者によれば、正しくありません。問題のメソッドが指定どおりに動作しているためです。この方法では負の値はマイナス記号 " - "を使用して表示する必要があり、上位ビットを1にして符号ビットを設定しないでください。言い換えると、基数16の場合、有効な文字列の範囲は "-80"(-128)から "7f"(127)までです。 「AD」ベース16は正の値173であり、範囲外である。 – Caner
@LAS_VEGAS確かにByte.parseByteは指定されたとおりに実行されますが、質問者が暗示するように、8ビット値の2文字の16進表現を対応するバイトに変換したい場合、このメソッドは(指定され実装されているように)高位ビットが1の値に対してはそうしないでください。 –
あなたはByte.parseByte("a", 16);
を使用することができるが、これが唯一の値に対して動作します127まで、 値が高いことは、私はint型に転送することをお勧めしますし、そのように
(byte) (Integer.parseInt("ef",16) & 0xff);
:なぜ '&0xff'ですか? –
&0xffは、符号なしのint値を取得するために使用されます。 – JCasso
これは受け入れられる回答である必要があります!それはまさに私が必要としたものです! – VikingPingvin
をバイトにキャスト による署名/署名のない問題に、バイトにキャストする必要があります。その後、あなたの質問は何ですか?もしあれば? – EJP
これは良い質問でした。なぜ閉鎖されたのですか? – Joe