将字符串转换并附加到现有字节数组中
本文关键字:字节 字节数 数组 转换 字符串 | 更新日期: 2023-09-27 18:01:01
我正在将现有的C#项目转换为Java/Android。我正在寻找与UTF8Encoding等效的Java。GetBytes(字符串、Int32、Int32,Byte[]、Int32(。看看下面的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);
好吧,假设你指的是ASCII而不是UTF-8,有两个直接选项:
中间字节数组
byte[] encodedText = text.getBytes(StandardCharsets.US_ASCII);
System.arraycopy(encodedText, 0, data, 6, encodedText.length);
这是低效的,但很简单。
字符集直接
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);
这可能更有效,但理解起来更复杂。