gpt4 book ai didi

java - 如何在 Java 中从字节数组转换为字符串并删除填充字符?

转载 作者:行者123 更新时间:2023-12-02 00:59:48 26 4
gpt4 key购买 nike

我有一个字节数组,其中包含用值 0 填充的文本,最多可填充 16 个字节。

当我尝试将其转换为字符串时,我无法获得正确的长度/字符串,它总是检索全部 16 个字符。

我已经尝试过:

import java.nio.charset.StandardCharsets;

public class HelloWorld{

public static void main(String []args){

// SIMULATED BYTE[] CONTAINS "ABC" PLUS CHAR(0) UNTIL FILL 16 BYTES
byte[] name = new byte[16];
for(int i=0; i<16; i++) {
name[i] = 0;
}
name[0] = 'A';
name[1] = 'B';
name[2] = 'C';

// DESIRED OUTPUT IS A STRING = "ABC".
// I.E. REMOVAL OF PADDING WITH CHAR(0)s
String nameStr = new String(name, StandardCharsets.US_ASCII);

System.out.println("#"+nameStr+"#");
System.out.println(nameStr.length());

}
}

这是输出:

output

所需的检索长度是 3,而不是 16。还可以在 NetBeans 输出中看到字符串如何包含填充 0 值。

我在 FreeBSD 和 NetBeans 11 下使用 OpenJDK8。

最佳答案

最直接的方法是识别尾随零并为 String 构造函数指定一个范围:

int end = name.length;
while(end > 0 && name[end - 1] == 0) end--;
String nameStr = new String(name, 0, end, StandardCharsets.US_ASCII);

关于java - 如何在 Java 中从字节数组转换为字符串并删除填充字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61894414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com