Tag: 字节的

如何有效地读取字节的位?

我正在开发一个包含WebSockets的项目,服务器(Node.js)和客户端(Chrome)之间的数据使用自定义(非常简单)的格式发送,用于我设置的数据交换。 我正在发送3位数据,因为我发送了所有有8种可能性的项目。 数据格式如下所示: 0 1 bit index 01234567 8901… item aaabbbcc cddd… 目前,我正在parsing像这样的字节的项目: var itemA = bytes[0] >> 5; var itemB = (bytes[0] >> 2) & 7; var itemC = (bytes[0] & 3) << 1 | bytes[1] >> 7; var itemD = (bytes[1] >> 4) & 7; 就个人而言,这感觉太复杂了。 问题是,它只是复杂的,因为我得到的字节数是8的倍数。要parsing出3位的项目,我必须进行位移,执行AND操作,因为8不能被3整除有时甚至必须像itemC那样结合两个字节的itemC 。 以3位组而不是8位组读取这些数据会更加有效。 我想到的是使用.toString(2)将所有字节转换为一个string,然后使用.substring得到一个长度为3的子string,并转换回一个数字parseInt(bitString, 2) ,但我想这不是做这件事的方式,因为string操作很慢,我实际上没有做任何string相关的。 是否有可能读取例如3组中的位而不是从字节parsing它们? […]