日期:2014-05-16  浏览次数:20419 次

问个二进制的问题
有个4字节的二进制流,
前24位代表一种含义
25位代表一种含义
26位代表一种含义
剩下的6位代表一种含义

现在可以一次取到1个字节,或者2个字节,或者4个字节
我怎么才能读到里面的位呢?

不知道我又没有说明白。。。
感谢。
------解决方案--------------------
不明白你的意思
你把他转换成二进制(长度为32位,不足补0)然后截取对应的位数试试
------解决方案--------------------
用位相与就行了.读第25位的话,那除了第25位,其它位全清0, 掩码与变量相与结果只有1和0
1&0=0;
1&1=1

------解决方案--------------------
引用:
有个4字节的二进制流,
前24位代表一种含义
25位代表一种含义
26位代表一种含义
剩下的6位代表一种含义

现在可以一次取到1个字节,或者2个字节,或者4个字节
我怎么才能读到里面的位呢?

不知道我又没有说明白。。。
感谢。

一次读4 byte(这是个int -2147483648 - 2147483647), 然后转换成string, 然后转char array去读出
function createBinaryString (nMask) {
??// nMask must be between -2147483648 and 2147483647
??for (var nFlag = 0, nShifted = nMask, sMask = ""; nFlag < 32; nFlag++, sMask += String(nShifted >>> 31), nShifted <<= 1);
??return sMask;
}
?
var string1 = createBinaryString(11);
var string2 = createBinaryString(4);
var string3 = createBinaryString(1);
?
alert(string1);
// prints 00000000000000000000000000001011, i.e. 11
var bits=string1.split("");
var b26 = bits[25];