将字符串转换为字节数组,然后转换回原始字符串
是否可以将字符串转换为字节数组,然后将其转换回Java或Android中的原始字符串?
我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(这是唯一的1 KB)中。我试图使用MD5哈希,但似乎它只是单向加密。我能做些什么来处理这个问题?
是否可以将字符串转换为字节数组,然后将其转换回Java或Android中的原始字符串?
我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(这是唯一的1 KB)中。我试图使用MD5哈希,但似乎它只是单向加密。我能做些什么来处理这个问题?
我建议使用字符串的成员,但要使用显式编码:
byte[] bytes = text.getBytes("UTF-8");
String text = new String(bytes, "UTF-8");
通过使用显式编码(并且支持所有Unicode的编码),您可以避免仅调用等问题:text.getBytes()
编辑:即使UTF-8是Android上的默认编码,我肯定会明确这一点。例如,这个问题只说“在Java或Android中” - 所以代码最终完全有可能在其他平台上使用。
基本上,鉴于普通的Java平台可以有不同的默认编码,我认为最好是绝对明确的。我见过太多人使用默认编码并丢失数据来承担这种风险。
编辑:在我匆忙的时候,我忘了提到你不必使用编码的名称 - 你可以使用一个。使用番石榴,我真的会使用:Charset
byte[] bytes = text.getBytes(Charsets.UTF_8);
String text = new String(bytes, Charsets.UTF_8);
你可以这样做。
字符串到字节数组
String stringToConvert = "This String is 76 characters long and will be converted to an array of bytes";
byte[] theByteArray = stringToConvert.getBytes();
http://www.javadb.com/convert-string-to-byte-array
字节数组到字符串
byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
String value = new String(byteArray);