是否可以将字节数组转换为字符串,但字符串的长度与数组中的字节数完全相同?如果我使用以下内容:
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-ASCII
或ISO-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或在方法本身内部处理来处理它。