Java 唐´;我不知道如何将字符串转换成字节数组
我有下一个任务,我需要创建一个将字符串对象的de字符写入字节数组的代码 首先我必须向用户请求一个字符串,然后我必须创建te字节数组,这个数组的第一个位置必须包含一个计数器 数组包含字符串中每个字符的ASCII码,计数器包含字符串的长度,我必须使用String.getBytes()方法 问题是,我不知道我是否正确使用getBytes()方法将字符串转换为bytearray,同时将数组的字符数放在第一个位置 问题是,我不知道我是否正确使用getBytes()方法将字符串转换为bytearray,同时将数组的字符数放在第一个位置 不,你不是 如果您阅读了Java 唐´;我不知道如何将字符串转换成字节数组,java,Java,我有下一个任务,我需要创建一个将字符串对象的de字符写入字节数组的代码 首先我必须向用户请求一个字符串,然后我必须创建te字节数组,这个数组的第一个位置必须包含一个计数器 数组包含字符串中每个字符的ASCII码,计数器包含字符串的长度,我必须使用String.getBytes()方法 问题是,我不知道我是否正确使用getBytes()方法将字符串转换为bytearray,同时将数组的字符数放在第一个位置 问题是,我不知道我是否正确使用getBytes()方法将字符串转换为bytearray,同时
String.getBytes()
的javadoc,它会告诉您,它返回一个新分配的字节数组,该数组以字节编码的表示形式包含字符串。编码字符串的第一个字节将位于数组的偏移量0处。这不是你(最终)结果所需要的
此外,您编写的内容将创建一个1字节数组,然后丢弃它
此问题要求您分配第二个数组(大小正确),然后将字节从第一个数组传输到第二个数组的正确位置。至少有几种方法可以做到这一点。(提示:其中一个涉及到对循环进行编码。)
还有一个细节你错过了。这个问题特别需要将字符的ASCII码放入数组中,但是getBytes()不一定将字符编码为ASCII码。(再看一遍javadoc,答案就在那里。)你读过javadoc吗?真正的问题是:如果你输入了一个多位数的数字,你就不会在索引0中有你关心的数字。否则,您的方法看起来很好(您确实声明了一个不必要的变量
l
,它在我看来就可以消失了)。我认为您需要System.arraycopy
。@DavidWallace-或者一个循环。
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;
}
}