我想将字符串值编码为修改后的UTF-8格式字节.有点像
byte[] bytes = MagicEncoder.encode(str, "modified UTF-8");
DataInput input = new DataInputStream(new ByteArrayInputStream(bytes));DataInput的每个read*()方法都必须能够正确读取底层字节。
发布于 2013-09-12 09:29:38
使用DataOutputStream
ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(byteOutputStream);
dataOutputStream.writeUTF("some string to write");
dataOutputStream.close();结果可在byteOutputStream.toByteArray()中获得
发布于 2013-09-12 09:43:23
As info:
修改后的UTF-8编码简单地取代了nul字符U+0000,通常编码为字节0,作为字节序列C0 80,这是一种正常的多字节编码,用于代码> 0x7F。(因此,正常的UTF-8解码就足够了。)
byte[] originalBytes;
int nulCount = 0;
for (int i = 0; i < originalBytes.length; ++i) {
if (originalBytes[i] == 0) {
++nulCount;
}
}
byte[] convertedBytes = new byte[originalCount + nulCount];
for (int i = 0, j = 0; i < originalBytes.length; ++i, ++j) {
convertedBytes[j] = originalBytes[i];
if (originalBytes[i] == 0) {
convertedBytes[j] = 0xC0;
++j;
convertedBytes[j] = 0x80;
}
}最好使用System.arrayCopy,并检查是否nulCount == 0。
https://stackoverflow.com/questions/18760041
复制相似问题