• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zungmou
V2EX  ›  程序员

有没有好的算法合成一个比特组?

  •  
  •   zungmou · Oct 16, 2015 · 2675 views
    This topic created in 3863 days ago, the information mentioned may be changed or developed.
    // 这个布尔类型的数组代表二进制 10011001
    bool[] bits = new []{ true, false, false, true, true, false, false, true };

    想讨论一下最高效的方法,将 bits 还原为一个 byte 。

    我的办法是 for 循环八比特 true 唯一出现的位置,然后 or 叠加运算。

    不知道各位有没有更好的方法?
    10 replies    2015-10-19 13:39:44 +08:00
    c742435
        2
    c742435  
       Oct 16, 2015
    byte = bits[0] * 128 + bits[1] * 64.....
    zhujinliang
        3
    zhujinliang  
       Oct 16, 2015
    _byte = 0;
    for i = 0; i < 8; i++ {

    _byte = _byte << 1 | bits[i];

    }
    weiceshi
        4
    weiceshi  
       Oct 16, 2015
    int i = 0;
    byte b = (byte)bits.Select(x=>(x?1:0)<<i++).Sum();
    adexbn
        5
    adexbn  
       Oct 16, 2015
    那啥,打字时瞄了一眼,把标题看成了有没有好的算命方法,对不起
    hitmanx
        6
    hitmanx  
       Oct 16, 2015
    adfreedom
        7
    adfreedom  
       Oct 16, 2015
    zealot0630
        8
    zealot0630  
       Oct 16, 2015
    std::bitset
    ryd994
        9
    ryd994  
       Oct 16, 2015 via Android
    试试用 union{
    bool[8];
    unsigned char;
    }
    zungmou
        10
    zungmou  
    OP
       Oct 19, 2015   ❤️ 1
    @ryd994 一个 bool 占一个字节的吧?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3219 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 14:26 · PVG 22:26 · LAX 07:26 · JFK 10:26
    ♥ Do have faith in what you're doing.