[英]java: convert a string to a string that contains the hex number of each character
我有一个字符串,实际上其中的每个字节都是十六进制数字的表示形式。
我想创建一个包含每个字符的实际十六进制数字的新字符串。
我知道我可以执行String.getBytes()
来获取每个字符的字节,我知道使用i=0;i<=String.getBytes().length
对其进行迭代。 我不明白的是如何创建一个新的字符串,每个字符都是十六进制数字(0-F)。
谢谢!
你可以做类似的事情
String test = "hello world", result = "";
for (byte b : test.getBytes())
result += Integer.toHexString(b) + " ";
System.out.println(result);
// result = 68 65 6c 6c 6f 20 77 6f 72 6c 64
但是请记住,Java中的字符串是unicode。
您的帖子中存在一些误解-至少是有问题的描述:
然后,您要调用String.getBytes()
,但尚不清楚您要使用哪种编码。 如前所述,String是一个字符序列。 要将其转换为bytes ,您需要应用编码。 不幸的是, String.getBytes()
使用“平台默认编码”,这几乎永远不是一个好选择。 您应该始终指定要使用的编码。
当你转换的字符串转换为字节(如果你一定要做到这一点),很容易将其转换为十六进制:
for (byte b : test.getBytes("UTF-8"))
{
int x = b & 0xff; // I suspect you don't want negative numbers
System.out.println(Integer.toHexString(b));
}
或者,您可能希望将每个Unicode 字符转换为其十六进制表示形式:
for (char c : test.toCharArray())
{
System.out.println(Integer.toHexString(c));
}
请注意, Integer.toHexString
不会将其输出填充到特定数量的字符。
如果您可以提供有关您的输入和预期输出的更多信息,那将真正有帮助。
Hex.encode(byteArray)
Integer.toHexString(..)
获取字节时请小心。 使用方法getBytes(ecnoding)
代替不带参数的方法,该方法采用平台编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.