我有一个包含十六进制数 但我想对其进行解码,以文本,并将其转换为字符串如何编码字符串为byte []
如果我的字符串为“FF505000010000000A00015634” 他们是一个字符串在十六进制,如何让他们\ XFF \ X50 ...等
请帮我在这里
我有一个包含十六进制数 但我想对其进行解码,以文本,并将其转换为字符串如何编码字符串为byte []
如果我的字符串为“FF505000010000000A00015634” 他们是一个字符串在十六进制,如何让他们\ XFF \ X50 ...等
请帮我在这里
这应该工作。你基本上得到每两个字符,并解析它到一个int
,这也可以被解释为一个char
。从那里,你建立另一个解码String
。
String s = "FF505000010000000A00015634";
if (s.length() % 2 != 0) {
//odd amount, so wrong string. Throw exception.
}
String decoded = "";
int j = 0;
while (j < s.length()) {
String sub = s.substring(j, j + 2);
int i = Integer.parseInt(sub, 16);
decoded += (char)i;
j += 2;
}
System.out.println(decoded);
我的输出很随意,但我认为你的测试字符串并不是那么好。
对于Hello world!
,使用此:
String s = "48 65 6C 6C 6F 20 57 6F 72 6C 64 21";
s = s.replaceAll(" ", "");
那么到底发生了什么:
String
分成两个字符。int
值,以便可以进行实际转换。String
。String
。一个简单的办法把文本为十六进制字符串转换成文本是使用的BigInteger。
String s = "Hello world!";
String hex = new BigInteger(s.getBytes(StandardCharsets.US_ASCII)).toString(16);
hex = hex.replaceAll("\\s+", ""); // remove any whitespaces.
String s2 = new String(new BigInteger(hex, 16).toByteArray(), StandardCharsets.US_ASCII);
System.out.printf("\"%s\" as hex is %s, converted back is \"%s\"%n", s, hex, s2);
打印
“世界,你好!”如十六进制是48656c6c6f20776f726c6421,转换回来是“Hello world!”
你的问题不清楚。 –
给出一个输入/输出示例。你可以使用'str = str.replaceAll(“\\ s +”,“”);' – jlordo
来删除空格你能提供一个真正的文本作为十六进制字符串吗?因为FF505000010000000A00015634不像ASCII文本那样编码为十六进制。 –