问个二进制的问题

yuhongpingimu 2012-12-15 07:38:45
有个4字节的二进制流,
前24位代表一种含义
25位代表一种含义
26位代表一种含义
剩下的6位代表一种含义

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

不知道我又没有说明白。。。
感谢。
...全文
197 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuhongpingimu 2012-12-22
  • 打赏
  • 举报
回复
使用arrayBuffer 读出字节后, 我用的是 移位和&运算。 谢谢大家。 感觉的自己的大学都白念 了。哈哈 谢谢楼上各位
rayaspnet 2012-12-17
  • 打赏
  • 举报
回复
引用 楼主 yuhongpingimu 的回复:
有个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];
plzzz 2012-12-15
  • 打赏
  • 举报
回复
用位相与就行了.读第25位的话,那除了第25位,其它位全清0, 掩码与变量相与结果只有1和0 1&0=0; 1&1=1
yuhongpingimu 2012-12-15
  • 打赏
  • 举报
回复
本身就是二进制文件 用arrayBuffer取出来的。 可以取到字节,但是里面的位 要怎么读呢?
似梦飞花 2012-12-15
  • 打赏
  • 举报
回复
不明白你的意思 你把他转换成二进制(长度为32位,不足补0)然后截取对应的位数试试

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧