不知道如何将String转换为字节数组

时间:2015-01-11 05:54:03

标签: java

我有下一个任务,我需要创建一个代码,将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,同时将第一个位置放入数组的字符数

1 个答案:

答案 0 :(得分:1)

  

问题是我不知道我是否正确使用getBytes()方法将String转换为bytearray,同时将第一个位置放入数组的字符数

不,你不是。

如果您读取String.getBytes()的javadoc,它会告诉您它返回一个新分配的字节数组,该数组包含字节编码表示形式的字符串。编码的String的第一个字节将位于数组的偏移零点。这不是您(最终)结果所需要的。

此外,您所写的内容将创建一个1字节的数组,然后将其丢弃。

此问题要求您分配第二个数组(大小合适),然后在正确的位置将字节从第一个传输到第二个。至少有几种方法可以做到这一点。 (提示:一个涉及编码循环。)

您还错过了另一个细节。问题特别要求您将ASCII码的字符放入数组中,但getBytes()不一定将字符编码为ASCII。 (再看看javadocs。答案就在那里。)