将字节数组转换为具有相等字节数的字符串



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

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.

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

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

这应该可以正常工作!

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或在方法本身内部处理来处理它

相关内容

  • 没有找到相关文章

最新更新