gpt4 book ai didi

java - 来自 byte[] 的 BitSet 长度奇怪

转载 作者:行者123 更新时间:2023-12-02 03:56:31 25 4
gpt4 key购买 nike

我的代码是:

String blah = "blah";
byte[] blahBytes = blah.getBytes("US-ASCII");
System.out.println(Arrays.toString(blahBytes));
BitSet set = BitSet.valueOf(blahBytes);
System.out.println(set.length());

输出是:

[98, 108, 97, 104]
31

为什么length()返回31?不应该是32吗?

最佳答案

位设置长度由设置为1的最高位的位置决定。 。由于传递给构造位集的所有字节都表示 UNICODE 的 ASCII 字符子集,因此第 8 位始终为零。因此,最高位设置为1将是位 30 或位 31,具体取决于字符串末尾的字母或数字:如果您传递 "bla1"而不是"blah"你会得到 30 ( demo 1 )。如果使用控制字符,例如 <TAB>您可以获得更短的 28 位集 ( demo 2 )。

如果您想要将长度四舍五入到下一个 8 的倍数,请使用

int roundedLength = 8 * ((set.length() + 7) / 8);

demo 3

关于java - 来自 byte[] 的 BitSet 长度奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35395338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com