给出以下示例:
String f="FF00000000000000";
byte[] bytes = DatatypeConverter.parseHexBinary(f);
String f2= new String (bytes);
我希望输出为FF00000000000000
,但它不能使用此方法。
答案 0 :(得分:3)
您目前正在尝试将字节解释为使用平台默认编码(UTF-8,ISO-8859-1或其他)进行文本编码。那不是你真正想要做的 - 你想把它转换回十六进制。
为此,只需查看您用于解析步骤的转换器,并查找相反方向的类似方法。在这种情况下,您需要printHexBinary
:
String f2 = DatatypeConverter.printHexBinary(bytes);
“在原始操作附近寻找反向操作”的方法通常是有用的...但请注意,有时您需要查看并行类型,例如: DataInputStream
/ DataOutputStream
。当您发现自己使用完全不同的类型进行逆操作时,这通常是一个警示标志。 (这并不总是错的,只是值得研究其他选择。)