java - 将字符串转换为字节数组,然后再转换回原始字符串

标签 java android byte hash arduino

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

我的目标是将一些字符串发送到微 Controller (Arduino) 并将其存储到 EEPROM(只有 1 KB)中。我尝试使用 MD5哈希,但似乎它只是单向加密。我该如何处理这个问题?

最佳答案

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

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平台可以有不同的默认编码,我认为最好是绝对明确的。我见过太多人使用默认编码并丢失数据来承担这种风险。

编辑:在我匆忙中我忘了提到您不必使用编码的 name - 您可以使用 Charset 代替。使用 Guava我会真的使用:

byte[] bytes = text.getBytes(Charsets.UTF_8);
String text = new String(bytes, Charsets.UTF_8);

关于java - 将字符串转换为字节数组,然后再转换回原始字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7947871/

相关文章:

android - 使用 okHttp 信任所有证书

java - 构建套接字通信以最小化数据传输

java - 创建不同数据类型(日期和 double )的二维数组

java - 如何访问 javascript 中的 servlet 变量

android - Android 上长期持久的 TCP 连接

android - Google Admob 每次点击费用低

java - 如何在java中将html表格的列宽转换为excel列的宽度

java - 如何安全地更新一个有很多读者和一个作者的文件?

python 如何像 zlib.adler32 一样快速地计算一个简单的校验和

Java int 到无符号字节