我正在尝试将Java字符串转换为各种编码类型并将其打印出来。
例如,luke
6C 75 6B 65
和UTF-8
UTF-16
为猪
,而E7 8C AA
UTF-8
732A
UTF-16
new String( org.apache.commons.codec.binary.Hex.encodeHex(str.getBytes("UTF-16")));
在UTF-16
中有1}}和{{1}}。
我如何编写一个能够做到这一点的函数?
{{1}}
似乎不适用于{{1}}。
答案 0 :(得分:7)
public class UseTheForce {
public static void main(final String[] args)
throws java.io.UnsupportedEncodingException {
for (final byte b : args[0].getBytes(args[1])) {
System.out.printf("%1$02X ", (b & 0xFF));
}
System.out.println();
}
}
测试
$ java UseTheForce luke US-ASCII
6C 75 6B 65
$ java UseTheForce luke UTF-8
6C 75 6B 65
$ java UseTheForce luke UTF-16
FE FF 00 6C 00 75 00 6B 00 65
$ java UseTheForce luke UTF-16BE
00 6C 00 75 00 6B 00 65
$ java UseTheForce luke UTF-16LE
6C 00 75 00 6B 00 65 00
$ java UseTheForce luke UTF-32
00 00 00 6C 00 00 00 75 00 00 00 6B 00 00 00 65
愿力量与你同在。
<强>更新强>
正如Formatter.html#detail中所述,(b & 0xFF)
部分不是必需的。