将字符串转换并附加到现有字节数组中

时间:2014-05-01 12:53:09

标签: c# java bytearray

我正致力于将现有的C#项目转换为Java / Android。我正在寻找相当于UTF8Encoding.GetBytes(String, Int32, Int32, Byte[], Int32)的Java。看一下下面的C#代码,如何将字符串数据包添加到数据字节数组中?我查看了String.getBytes()方法,但它不一样。

int length = packet.Length;

byte[] data = new byte[6 + length + 1];
data[0] = (byte)VAR1;
data[1] = 1;

**Encoding.UTF8.GetBytes(packet, 0, length, data, 6);**

data[6 + length] = (byte)VAR2;

data[5] = (byte)(length % 256);
length /= 256;
data[4] = (byte)(length % 256);
length /= 256;
data[3] = (byte)(length % 256);
length /= 256;
data[2] = (byte)(length % 256);

1 个答案:

答案 0 :(得分:1)

好的,鉴于你的意思是ASCII而不是UTF-8,有两个直接的选择:

中间字节数组

byte[] encodedText = text.getBytes(StandardCharsets.US_ASCII);
System.arraycopy(encodedText, 0, data, 6, encodedText.length);

效率低,但很简单。

Charset直接

CharsetEncoder encoder = StandardCharsets.US_ASCII.newEncoder();
CharBuffer charBuffer = CharBuffer.wrap(text);
ByteBuffer byteBuffer = ByteBuffer.wrap(data, 6, data.length - 6);
encoder.encode(charBuffer, byteBuffer, true);

这可能可能更有效,但理解起来更复杂。