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

新手上路,请多包涵

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

我的目标是将一些字符串发送到微控制器 (Arduino) 并将其存储到 EEPROM(这是唯一的 1 KB)中。我尝试使用 MD5 哈希,但它似乎只是单向加密。我能做些什么来处理这个问题?

原文由 Eng.Fouad 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 557
2 个回答

我建议使用字符串的成员,但 _使用显式编码_:

 byte[] bytes = text.getBytes("UTF-8");
String text = new String(bytes, "UTF-8");

通过使用显式编码(以及支持所有 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);

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题