0

是否可以将字节数组转换为字符串,但字符串的长度与数组中的字节数完全相同?如果我使用以下内容:

byte[] data; // Fill it with data
data.toString();

字符串的长度与数组的长度不同。我相信这是因为 Java 和/或 Android 考虑了某种默认编码。数组中的值也可以是负数。从理论上讲,应该可以将任何字节转换为某个字符。我想我需要弄清楚如何指定为每个字符生成固定单字节宽度的编码。

编辑:

我尝试了以下但没有奏效:

byte[] textArray; // Fill this with some text.
String textString = new String(textArray, "ASCII"); 
textArray = textString.getBytes("ASCII"); // textArray ends up with different data.
4

3 回答 3

1

您可以使用 String 构造函数String(byte[] data)从字节数组创建字符串。如果还想指定字符集,可以使用String(byte[] data, Charset charset)构造函数。

于 2013-02-05T14:43:46.807 回答
0

这应该可以正常工作!

public static byte[] stringToByteArray(String pStringValue){
    int length= pStringValue.length();
    byte[] bytes = new byte[length];

    for(int index=0; index<length; index++){
        char ch= pStringValue.charAt(index);
        bytes[index]= (byte)ch;
    }

    return bytes;
}

从 JDK 1.6 开始:

您还可以使用:

stringValue.getBytes()将返回一个字节数组。

在传递NULL 字符串的情况下,您需要通过抛出 nullPointerException 或在方法本身内部处理它来处理它

于 2014-12-31T07:04:11.873 回答
0

尝试使用US-ASCIIISO-8859-1代替ASCII. ASCII 不是 Java 或 Android 的内置字符编码,但其中之一是。它们保证为单字节编码,但需要注意的是,不在字符集中的字符将被静默截断。

于 2013-02-06T00:43:11.063 回答