在Java中将十六进制字符串转换为一个字节

php*_*der 10 java string byte type-conversion

在Java中,如何将字节的十六进制字符串表示(例如"1e")转换为字节值?

例如:

byte b = ConvertHexStringToByte("1e");
Run Code Online (Sandbox Code Playgroud)

Roi*_*i A 21

您可以使用,Byte.parseByte("a", 16); 但这只适用于最多127的值,由于签名/未签名的问题,需要转换为字节,因此我建议将其转移到int然后将其转换为byte

(byte) (Integer.parseInt("ef",16) & 0xff);
Run Code Online (Sandbox Code Playgroud)


ZZ *_*der 15

Integer.parseInt(str, 16);
Run Code Online (Sandbox Code Playgroud)

  • @phpscriptcoder:不,你会得到1e.试试这个:String roundtrip = Integer.toHexString(Integer.parseInt(str,16)); (2认同)

coo*_*ird 12

Byte.parseBytebyte通过解析字符串表示来返回a .

使用带(String, int)签名的方法,基数可以指定为16,因此可以解析字节的十六进制表示:

Byte.parseByte("1e", 16);
Run Code Online (Sandbox Code Playgroud)

  • 危险!此方法将无法解析负字节值,例如"AD".请参见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6259307.最好使用Integer.parseInt (7认同)