问个二进制的问题

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

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

不知道我又没有说明白。。。
感谢。
...全文
199 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)然后截取对应的位数试试
ASCII 十六进制 转换工具 简单计算器:可进行简单的四则运算,支持小键盘输入! 进制转换:数值型的常用进制的相互转换: (2、8、16)10 及 216 说明:由于数值型转换函数为自行编写,所以支持包括小数部分. (适用于计算器等级考级的笔试基础题) 字符转换: 可转换多个字符为ASCII码(十进制)及十六进制,且可加入前置及后置字符。 字符转ASCII(即字符的十进制): 其中字符转换为ASCII码中,如果字符为汉字(即双字节) 可选择:正数、负数或者字节分离三种表示方式 利如汉字"中" 正数:54992 负数:-10544 字节分离:214,208 说明: 如果包含汉字字符,且选了负数或字节分离表示方式, 请不要使用"-"或","来作为前、后置符,以免逆操作时引起错误 ASCII转字符:就是上面的逆操作,这时只要输入对应的ASCII码就能转换为字符 说明: 1.由于本程序有判断功能,所以可不用选择汉字表达方式, 即您输入54992或-10544或214,208都能转换为汉字"中" 2.如果进行待逆操作的ASCII码包含分隔,请必须在前置和后置符框输入对应字符 例如:%-15133;%-17725;想逆向转为字符,须在前置符填入% 后置符填入; %-15133 %-17725 则前置符填入% 后置符输入空格 注意要转为字符的对应数值一定有要间隔符 例如:%-15133%-17725是没法进行转换的,而应该像上面一样改为%-15133 %-17725 即间隔至少(默认)为空格符 字符转换为十六进制及其逆操作与上面基本相同 说明:例如在前置符加了%即可求UTF-8值 键盘ASCII查询:可查键盘按键的十进制与十六进制值。 (例如可查询F1-F12,Shift,Ctrl,Alt,回车,退格等键值) 字符与Base64互转:字符与Base64编码的互转,可自定义密钥,以达到简单的加密! 子网划分辅助: IP转二进制:把IP地址或子网掩码转化为二进制形式. 二进制数操作:把上面转化到的IP二进制进行取反、与、或操作。 说明:普通二进制(即没有包括".")也可进行操作。 IP二进制转十进制:即把上面得到的二进制结果重新转换为十进制方式。 常见问题: 1.问:“进制转换”与“字符转换”都具有转为十六进制的操作,有何不同? 答:“进制转换”只能转换数值型,而“字符转换”是把该字符串一位一位 分别当作字符来转换! 2."字符转换"中想把对应的值转化为对应的字符,如果包括分隔符,需要手工 填入。 (详见上面的:ASCII转字符) 3."字符转换"中点击“键盘的ASCII查询”(即有键盘图标的那个按钮后) 该按钮会自动隐藏,然后可按键盘键来得到对应的值 查询完毕,可单击下面的状态栏恢愎(键盘图标的那个按钮出现) 4.关于子网划分辅助的使用: 在这里给予一段(黑客X档案中iqst)如何利用子网掩码得到网络、主机地址的文章节选: 如下: 如何用子网掩码得到网络、主机地址 (1)将IP地址与子网掩码转换成二进制; (2)将二进制形式的IP地址与子网掩码做“与”运算,将答案化为十进制便得到网络地址; (3)将二进制形式的子网掩码取“反”; (4)将取“反”后的子网掩码与IP地址做“与”运算,将答案化为十进制便得到主机地址。 通过上面的一段大家应该有所了解了,如果还不太明白可勾选“示范”来查看。 我把上面操作的各个模块都独立出来而不是一步求出结果, 目的是让大家能更方便的使用各个步聚来完成类似的需求!

87,997

社区成员

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

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