作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 byteArray
中有这个 40 位 key 大小为 8,我想向其添加 0 填充,直到它变为 56 位。
byte[] aKey = new byte [8]; // How I instantiated my byte array
有什么想法吗?
最佳答案
一个 8 字节的数组是 64 位的。如果将数组初始化为
byte[] aKey = new byte [8]
所有字节都用 0 初始化。如果您设置前 40 位,即 5 个字节,那么您的其他 3 个字节,即从 41 到 64 位仍然设置为 0。因此,默认情况下,您将第 41 位到第 56 位设置为 0,并且您不必须重置它们。
但是,如果您的数组已经用一些值进行了初始化并且您想清除从 41 到 56 的位,则有几种方法可以做到这一点。
首先:你可以只设置aKey[5] = 0
和aKey[6] = 0
这将设置第 6 个字节和第 7 个字节,它们由第 41 位到第 56 位组成, 到 0
第二:如果是处理位,也可以使用BitSet。但是,在您的情况下,我认为第一种方法要容易得多,尤其是如果您使用的是 Java 7 之前的版本,则以下某些方法不存在,您必须编写 your own methods从字节数组转换为位集,反之亦然。
byte[] b = new byte[8];
BitSet bitSet = BitSet.valueOf(b);
bitSet.clear(41, 56); //This will clear 41st to 56th Bit
b = bitSet.toByteArray();
注意:BitSet.valueOf(byte[])
和 BitSet.toByteArray()
仅存在于 Java 7 中。
关于java - 如何将填充添加到字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474957/
我是一名优秀的程序员,十分优秀!