2014-03-05 31 views
1

考虑下面的例子:字符串为byte []和字节为String

String f="FF00000000000000"; 
byte[] bytes = DatatypeConverter.parseHexBinary(f); 
String f2= new String (bytes); 

我想要的输出为FF00000000000000但它不是用这种方法工作。

+0

可能的重复http://stackoverflow.com/questions/6684665/java-byte-array-to-string-to-byte-array – Smutje

+1

什么是'DatatypeConverter'?可能它有一个相反的方法? – Stewart

回答

3

您当前正试图解释字节,就好像它们是使用平台默认编码(UTF-8,ISO-8859-1或其他)编码的文本一样。这不是你真正想要做的 - 你想把它转换回十六进制。为此,只需看看你用于解析步骤的转换器,然后寻找类似的方法,即在相反的方向上工作。在这种情况下,你想printHexBinary

String f2 = DatatypeConverter.printHexBinary(bytes); 

的“寻找原来的操作接近反向操作”的方法是,一般一个有用的......但是要知道,有时候你需要看看并联型,例如DataInputStream/DataOutputStream。当你发现自己完全使用不同类型的反向操作时,通常会有一些警告信号。 (这并不总是错,只是值得调查其他选项。)