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

您如何将二进制数据转换为字符串然后再返回Java?

阴福
2023-03-14
问题内容

我的文件中有二进制数据,可以将其读入字节数组并进行处理。现在,我需要通过网络连接将部分数据作为XML文档中的元素发送。我的问题是,当我将数据从字节数组转换为String并返回到字节数组时,数据已损坏。我已经在一台机器上对此进行了测试,以将问题隔离到String转换中,所以现在我知道它不会被XML解析器或网络传输损坏。

我现在所拥有的是

byte[] buffer = ...; // read from file
// a few lines that prove I can process the data successfully
String element = new String(buffer);
byte[] newBuffer = element.getBytes();
// a few lines that try to process newBuffer and fail because it is not the same data anymore

有谁知道如何将二进制转换为String并返回而不会丢失数据?

回答:谢谢山姆。我感觉像个白痴。昨天我回答了这个问题,因为我的SAX解析器在抱怨。由于某种原因,当我遇到这个看似独立的问题时,我并没有想到它是同一问题的新症状。

编辑:仅出于完整性考虑,我使用了Apache Commons

Codec软件包中的Base64类来解决此问题。


问题答案:

如果您使用base64对其进行编码,这会将所有数据转换为ASCII安全文本,但是base64编码的数据大于原始数据



 类似资料:
  • 试图对这个问题中的各个数字求和。然而,当涉及负数时,函数就会分崩离析。这是因为当您使用toString()时,会将负号转换为NewStr中的值。例如,在本例中,newstr[0]==='-'。不管怎么说都是为了解决这个问题?最好使用Number()函数

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

  • 我如何将一个写为二进制的字符串转换为二进制(字节数组)? 如果我有一个字符串: 下面是当我将二进制设置为字节数组时发生的情况(字节数组返回48,这是ASCII) 我不擅长解释,所以希望上面的例子足以告诉你我想要什么。

  • 问题内容: 是否可以将字符串转换为字节数组,然后在Java或Android中将其转换回原始字符串? 我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(仅1 KB)中。我尝试使用MD5哈希,但它似乎只是一种单向加密。我该怎么办? 问题答案: 我建议使用字符串的成员,但 使用显式编码 : 通过使用一种显式编码(以及一种支持所有Unicode的编码),您可以避免仅调用等问题

  • 问题内容: 我想将二进制字符串转换为数字Eg 这怎么可能?谢谢 问题答案: 该函数将字符串转换为数字,并使用第二个参数来指定字符串表示形式的基数: 看到它在行动 。

  • 假设我有以下字符串: 如何将其转换为二进制数(0和1)?诀窍在于:我不允许使用内置方法进行转换。这必须用数学方法来完成。我不知道从哪里开始。谁能给我指出正确的方向吗? 编辑1:我看过这个问题,人们建议使用getBytes(字符串)、字符集UTF-8,我nteger.toBinaryString。我不允许使用任何这些方法进行转换。我也没听说过36垒。