我有下一个任务,我需要创建一个代码,将String对象的de字符写入字节数组。
首先我要问用户一个字符串,然后我必须创建te字节数组,这个数组的第一个位置必须包含一个计数器。
数组包含String的每个字符的ASCII码,计数器包含String的长度,我必须使用String.getBytes()方法。
import java.util.Scanner;
public class ByteArray {
public static void main(String[] args)
{
int l;
String string;
Scanner read = new Scanner(System.in);
System.out.print("String: ");
string= read.nextLine();
l = string.length()+1;
byte arrayBytes[] = new byte[l];
arrayBytes = string.getBytes();
arrayBytes[0] = l;
}
}
问题是我不知道我是否正确使用getBytes()方法将String转换为bytearray,同时将第一个位置放入数组的字符数
答案 0 :(得分:1)
问题是我不知道我是否正确使用getBytes()方法将String转换为bytearray,同时将第一个位置放入数组的字符数
不,你不是。
如果您读取String.getBytes()
的javadoc,它会告诉您它返回一个新分配的字节数组,该数组包含字节编码表示形式的字符串。编码的String的第一个字节将位于数组的偏移零点。这不是您(最终)结果所需要的。
此外,您所写的内容将创建一个1字节的数组,然后将其丢弃。
此问题要求您分配第二个数组(大小合适),然后在正确的位置将字节从第一个传输到第二个。至少有几种方法可以做到这一点。 (提示:一个涉及编码循环。)
您还错过了另一个细节。问题特别要求您将ASCII码的字符放入数组中,但getBytes()不一定将字符编码为ASCII。 (再看看javadocs。答案就在那里。)