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

如何在Java中将具有空终止符的字节数组转换为字符串?

阎兴为
2023-03-14
问题内容

如何从字节数组创建String对象

byte arr[MAX_SIZE];  // Java

其中数组元素之一是C空终止字节?像打电话一样简单吗

String str = new String( arr );

String构造函数是否知道会自动在null终止符处停止?空字节之后的任何字节都是(可能是)我不想包含在字符串中的垃圾字符。在解析字节数组包含未知长度的字段下的最后一个响应建议循环遍历数组并手动查找空终止符,但是我想知道String构造函数是否会自动执行此操作。我还假定系统的默认字符集将在所有末端使用。


问题答案:
byte arr[] = ...
    Charset charset = ...
    int i;
    for (i = 0; i < arr.length && arr[i] != 0; i++) { }
    String str = new String(arr, 0, i, charSet);

笔记:

  • 通常,最好使用显式的CharSet参数,以使您的应用程序不依赖于平台的默认字符集/编码。

  • 这不适用于某些字符集。例如,UTF-16编码的字符串不能安全地表示为零结尾的字节序列,因为许多代码单元包含零字节。(另一方面,如果字符串不包含代码点零的实例,则[UTF-8可以](http://codingdict.com/questions/111277;请参阅UTF-8可以包含零字节吗?

…但是我想知道String构造函数是否会自动执行此操作。

不,他们不会。(不要“奇怪” …阅读javadoc :-))

我还假定系统的默认字符集将在所有末端使用。

如果未指定字符集,则将使用Java平台的默认字符集。这可能是 系统 默认值,但不能保证。



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

  • 问题内容: 我有一个一维String数组,我想将其转换为一维字节数组。我该怎么做呢?这需要ByteBuffer吗?我怎样才能做到这一点?(字符串可以是任意长度,只想知道如何执行这样的操作。将其转换为字节数组后,如何将其转换回String数组? -担 问题答案: 数组到数组 ,应该 手动 将其转换为两边,但是如果只有一个String,则可以和; 像这样 对于string []中的一个字节[],您必须

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

  • 我得到一个错误读数:

  • 问题内容: 如何将Java字符串转换为ASCII字节数组? 问题答案: 使用该方法,为其指定适当的名称(或名称)。 例: (Java 7的前:)

  • 问题内容: 我想将a转换为Character类的对象数组,但无法执行转换。我知道我可以使用该方法将String转换为原始数据类型类型为“ char”的数组,但这无助于将String转换为Character类型的对象数组。 我将如何去做? 问题答案: 用这个: