在Java中生成300字节的随机字符串?

时间:2014-11-08 06:03:05

标签: java string byte

当人们要求我生成300字节或某些预定义字节的随机字符串时,我总是感到困惑。我不确定它们一般意味着什么?他们是否要求字符串长度为300?

我正在开展一个项目,人们要求我生成大约300字节的随机字符串。

有可能吗?我很困惑我们如何生成300字节的随机字符串?

我知道如何生成这样的随机字符串 -

private static final Random random = new Random();
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

public static String generateString(int length) {
    StringBuilder sb = new StringBuilder(length);
    for (int i = 0; i < length; i++) {
        sb.append(CHARACTERS.charAt(random.nextInt(CHARACTERS.length())));
    }
    return sb.toString();
}

当我们需要生成大约300字节的随机字符串时,有人能解释一下这是什么意思吗?

3 个答案:

答案 0 :(得分:1)

字符串由字符组成,但表示字符所需的字节数可以是1或2(或有时更多),具体取决于字符和编码。例如,用UTF8编码的字符超过ascii 127需要2个字节,但是那些 - 如英文字母和数字,只需要1个。

通常,字符串大小是指字符数。如果要写字节,则只需要字节,而写入的字节取决于使用的编码。

我会将需求解释为300个字符,特别是因为您列出了所有候选字符,并且它们是标准编码中的1字节字符。

答案 1 :(得分:-1)

由于每个十六进制数字代表四个二进制数字,这意味着两个数字代表1个字节。您可以用十六进制生成300个随机数Yi。这样,0x41 <= Yi <= 0x5a。以便Yi映射到UTF-8中的[A-Za-z]。 (如果要包含数字或任何其他字符,请更改范围)。

然后使用Byte Encodings

将这些数字转换为String

答案 2 :(得分:-2)

java char是2个字节,示例如下:

public class Main {
public static void main(String[] args) {
    String str="Hello World" ;
    System.out.println(str.getBytes().length);
} 

}

结果是11。