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

标签 java string char buffer bytearray

我有一组字符串,用于字段,如名称、用户 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/

相关文章:

java - 在android中使用jsoup删除html实体

java - 如何将光标移至自用户将数据放入后已以编程方式编辑的 EditText 的右边缘?

Java:String 对象的线程安全

.net - 在C#Web服务中处理UTF-8字符串

Python:os.join.path()

java - 在 Swing 中显示动画 BG

java - 正则表达式模式验证重复字符的计数

c++ - C++ 中 char* 到底是什么意思?

c - 底数大于10的C扫描

java - SpringMVC : Variables in Annotations