将 List<Boolean> 转换为字节 [ ] 数组

Convert List<Boolean> to byte [ ] array

提问人:TsigumEnes 提问时间:4/14/2018 最后编辑:PhantômaxxTsigumEnes 更新时间:4/14/2018 访问量:573

问:

我有一个布尔值列表,我想转换 Byte [] 数组。我尝试将 List 转换为 byte[] 数组,但我有一个错误。这是我的代码

 List<Boolean> list = model.getBooleanData();
               boolean[] inputSleep = new boolean[list.size()];

               byte[] toReturn = new byte[inputSleep.length / 8];
               for (int entry = 0; entry < toReturn.length; entry++) {
                   for (int bit = 0; bit < 8; bit++) {
                       if (inputSleep[entry * 8 + bit]) {
                           toReturn[entry] |= (128 >> bit);
                       }
                   }
               }

我得到了所有的布尔值并进行了检查,但我试图把所有的布尔值都弄错了。谢谢你的帮助。如何正确将 List 转换为 byte[] 数组?

Java Android 数组 类型转换 逻辑

评论

2赞 Mark 4/14/2018
boolean[] inputSleep- 所有值都初始化为 - 您永远不会用 中的布尔数据填充数组。直接返回 - 毫无意义。falselistmodel.getBooleanData()boolean[]List
0赞 TsigumEnes 4/14/2018
但是我从模型中填写列表并检查模型是否填充为布尔值。然后我检查了 inputSleep 所有值 False。
0赞 Mark 4/14/2018
这就是我要说的,也是原因吗?
0赞 Anonymous 4/14/2018
你能确定 8 分为列表长度吗?否则,列表元素将丢失。
0赞 TsigumEnes 4/14/2018
哦,对不起,伙计,我现在明白了,如果我从列表布尔值中设置 inputSleep,所有输入睡眠值都不是假的。我会试试:)

答:

2赞 TsigumEnes 4/14/2018 #1

是的,谢谢你们,我解决了这个问题。 这是正确的代码。也许这个解决方案需要有人)

 List<Boolean> list = model.getBooleanData();
               Boolean[] inputSleep = new Boolean[list.size()];
               inputSleep = list.toArray(inputSleep);


               byte[] toReturn = new byte[inputSleep.length / 8];
               for (int entry = 0; entry < toReturn.length; entry++) {
                   for (int bit = 0; bit < 8; bit++) {
                       if (inputSleep[entry * 8 + bit]) {
                           toReturn[entry] |= (128 >> bit);
                       }
                   }
               }