将String转换为字节数组,然后再转换回原始String

Eng*_*uad 51 java hash android byte arduino

是否可以将字符串转换为字节数组,然后将其转换回Java或Android中的原始字符串?

我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(仅1 KB).我试图使用MD5哈希,但它似乎只是单向加密.我该怎么做才能解决这个问题?

Jon*_*eet 114

我建议使用string的成员,但使用明确的编码:

byte[] bytes = text.getBytes("UTF-8");
String text = new String(bytes, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

通过使用显式编码(以及支持所有Unicode的编码),您可以避免仅调用text.getBytes()等问题:

  • 您明确使用了特定的编码,因此您知道以后要使用哪种编码,而不是依赖于平台默认值.
  • 你知道它将支持所有的Unicode(而不是像ISO-Latin-1).

编辑:尽管UTF-8是Android上的默认编码,但我肯定会明确这一点.例如,这个问题只说"在Java或Android中" - 所以完全有可能代码最终会在其他平台上使用.

基本上假设普通的Java平台可以有不同的默认编码,我认为最好是绝对明确的.我见过很多人使用默认编码并丢失数据来冒这个风险.

编辑:在我的仓促中,我忘了提到你不必使用编码的名称 - 你可以使用Charset代替.使用Guava真的使用:

byte[] bytes = text.getBytes(Charsets.UTF_8);
String text = new String(bytes, Charsets.UTF_8);
Run Code Online (Sandbox Code Playgroud)


Mic*_*Bak 11

你可以这样做.

字符串到字节数组

String stringToConvert = "This String is 76 characters long and will be converted to an array of bytes";
byte[] theByteArray = stringToConvert.getBytes();
Run Code Online (Sandbox Code Playgroud)

http://www.javadb.com/convert-string-to-byte-array

字节数组到字符串

byte[] byteArray = new byte[] {87, 79, 87, 46, 46, 46};
String value = new String(byteArray);
Run Code Online (Sandbox Code Playgroud)

http://www.javadb.com/convert-byte-array-to-string

  • 我肯定*不会*使用该代码.它假定平台默认编码在两个地方都使用时相同,并且平台默认编码处理字符串中的所有字符. (3认同)