当前位置: 首页 > 面试题库 >

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

葛阳
2023-03-14
问题内容

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

我的目标是将一些字符串发送到微控制器(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平台 可以 具有不同的默认编码,我认为最好是绝对明确的。我已经看到太多的人使用默认编码并丢失数据来冒这种风险。

编辑:匆忙中,我忘了提到您不必使用编码的 名称 -您可以Charset改用。我 真的 会用番石榴: __

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


 类似资料:
  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字

  • 问题内容: 我在这里有点麻烦 我正在尝试将numpy.ndarray转换为字符串,我已经这样做了: 它有效,但是我想知道是否可以将其转换回numpy.ndarray。 最好的方法是什么? 我正在使用numpy 1.8.1 上下文:目标是将numpy.ndarray作为消息发送到Rabbitmq(pika库) 问题答案: 您可以使用此方法: 对不起,我的回答很简短,评论不够。请记住声明数据类型,否则

  • 问题内容: 我有以下代码,我试图通过测试,但似乎无法理解Java世界中各种编码形式。 我想我的问题是:将任意字节的字节数组转换为Java字符串,然后将同一Java String转换为另一个字节数组的正确方法是什么,该字节数组将具有与原始字节相同的长度和相同的内容数组? 问题答案: 尝试特定的编码: ideone链接

  • 问题内容: 我有一个要加密的字节数组,然后转换为字符串,以便可以传输。当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密。我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使用诸如str.getBytes()之类的东西将其转换为字节数组时,它与我的原始字节数组不匹配。 示例输出: 任何想法如何将接收到的字符串转换为与发送的字节数组匹配的字节数组? 谢谢 问题答案:

  • 问题内容: 假设我有一个4字符串,并且我想将此字符串转换为字节数组,其中字符串中的每个字符都转换为等效的十六进制。例如 我正在尝试让我的输出成为 有没有简单的方法可以做到这一点? 问题答案: 编码功能可以为您提供帮助,编码返回字符串的编码版本 或者你可以使用数组模块

  • 如何将字符串(字节字符串)转换为字节(字节字符串),而不必手动复制和粘贴字符串并在其前面放置b?