【问题标题】:Convert List<Boolean> to byte [ ] array将 List<Boolean> 转换为 byte [ ] 数组
【发布时间】:2018-09-24 13:33:10
【问题描述】:

我有一个布尔值列表,我想将其转换为 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);
                       }
                   }
               }

我得到所有布尔值并检查但我尝试将所有布尔值都设为 false。感谢您的帮助。如何正确地将 List 转换为 byte[] 数组?

【问题讨论】:

  • boolean[] inputSleep - 所有值都初始化为 false - 你永远不会用来自 list 的布尔数据填充数组。让model.getBooleanData() 直接返回boolean[] - List 毫无意义。
  • 但我从模型中填充列表并检查模型是否填充为布尔值。然后我检查了 inputSleep 所有值 False。
  • 这就是我要说的,为什么?
  • 你能确定8分为列表长度吗?否则列表元素将丢失。
  • 噢,对不起,我现在明白了

标签: java android arrays type-conversion boolean-logic


【解决方案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);
                       }
                   }
               }

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2012-04-18
    • 2012-05-18
    • 2020-05-17
    相关资源
    最近更新 更多