当人们要求我生成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字节的随机字符串时,有人能解释一下这是什么意思吗?
答案 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。