gpt4 book ai didi

java - 如何在 Java 中将一个或多个字符串转换为字节数组中的不同范围?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:19 25 4
gpt4 key购买 nike

我有一组字符串,用于字段,如名称、用户 ID、电子邮件等,需要放入特定大小(1024 字节)的 byte[] 数组中。

我很想找到一种方法/函数,让我可以像下面这样简单地使用我的索引变量 bufferPosition:

byteArray[bufferPosition] += name += userID += email;

bufferPosition += name.length() += userID.length() += email.length();

到目前为止,我所发现的只是将字符串直接转换为字节数组的方法,以及一些看似乏味的解决此问题的方法(即将字符串的每个元素视为一个字符,转换为字节,创建一个循环结构并插入每个元素)。

编辑:跟进

我还有一些字段是 String[] 数组,最多包含 14 个元素。这将是最乏味的部分。我可以使用类似的 for-each 循环吗?我认为有一种非常聪明的方法可以解决这个问题。

最佳答案

试试这个,使用 System.arraycopy :

// some dummy data
byte[] myByteArr = new byte[1024];
String name = "name";
String userId = "userId";
int bufferPosition = 0;

// repeat this for all of your fields...
byte[] stringBytes = name.getBytes(); // get bytes from string
System.arraycopy(stringBytes, 0, myByteArr, bufferPosition, stringBytes.length); // copy src to dest
bufferPosition += stringBytes.length; // advance index

您可以使用循环来完成此操作(使用您的字段名称):

String[] myFields = new String[]{name, userID, email};  // put your fields in an array or list

// loop through each field and copy the data
for (String field : myFields) {
byte[] stringBytes = field.getBytes(); // get bytes from string
System.arraycopy(stringBytes, 0, myByteArr, bufferPosition, stringBytes.length); // copy src to dest
bufferPosition += stringBytes.length; // advance index
}

您需要确保不超出数组的边界,但这是一个简单的示例。

关于java - 如何在 Java 中将一个或多个字符串转换为字节数组中的不同范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29833712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com