我有一个4字节的数组 里面的前30bit包含了一个9位数的数字,请问我怎么移位取出来阿?
public static void main(String[] args) throws IOException {
byte [] a = { (byte) -60, (byte) 23, (byte) -46, (byte) 8 };
//int b = (int) new DataInputStream(new ByteArrayInputStream(a)).readInt();
// 移位
System.out.println(b); }
比如变量a这4个字节的中 前30bit包含了一个9位数字 我不知道怎么移位能得到这30bit 如何得到这个9位数
取完了以后 还剩下2bit 在字节{(byte)8} 里面 下一个字节是{(byte)23}
有一个数据是4bit 包含在{(byte)8}的剩下2bit和{(byte)23}开头2bit里面 这4bit的数据又怎么取出来阿?我在网上看了很多移位的 实在搞不懂,随发帖求助!谢谢大家...
public static void main(String[] args) throws IOException {
byte [] a = { (byte) -60, (byte) 23, (byte) -46, (byte) 8 };
//int b = (int) new DataInputStream(new ByteArrayInputStream(a)).readInt();
// 移位
System.out.println(b); }
比如变量a这4个字节的中 前30bit包含了一个9位数字 我不知道怎么移位能得到这30bit 如何得到这个9位数
取完了以后 还剩下2bit 在字节{(byte)8} 里面 下一个字节是{(byte)23}
有一个数据是4bit 包含在{(byte)8}的剩下2bit和{(byte)23}开头2bit里面 这4bit的数据又怎么取出来阿?我在网上看了很多移位的 实在搞不懂,随发帖求助!谢谢大家...
解决方案 »
- linux 安装 tomcat 出现错误
- 谁能给个基于注解的SpringMVC的工程
- 在JSP页面中怎么获得Struts2在action中配置的request
- 新手请教:java中的分层
- weblogic9 不支持EL?
- 请教高手在 基于weblogic 在jsp上显示水晶报表的例子吗给一个看看,谢谢
- 关于水晶报表显示数据的问题,请高人指点,谢谢!!!
- javax.servlet.ServletException: Cannot find message resources under key org.apache.struts.action.MESSAGE
- 请教j2ee的一点问题
- 请问一个迭代模式,请看代码有问号的地方
- Hibernate困惑,无法显示查询结果
- 发送邮件,不以附件形式表现
int b = 0;
for (int i=0; i<a.length; i++) {
b = (b<<4) & a[i];
}
b &= 0xfffffffc; //取左边30bit
System.out.println(b);
int b = 0;
for (int i=0; i<a.length; i++) {
b = (b<<8) & a[i]; //应该是左移8位
}
b &= 0xfffffffc; //取左边30bit
System.out.println(b);
是 &0xfffffffc,即保持位数不变,最后2位清0,还是说整体右移2位(也就是去掉最后两位)
byte [] a = { (byte) -60, (byte) 23, (byte) -46, (byte) 8 };
int b = 0;
for (int i=0; i<a.length; i++) {
b = (b<<8) | (a[i] & 0x0ff);
}long c = b & 0x0fffffffcL; //保持位数不变,最后2位清0
System.out.printf("%x\n", c);
System.out.println(c); //这样得到的数可能会超过9位数,可能不是这个结果b >>>= 2; //整体右移2位,即去掉后2位,保留30bit
System.out.printf("%x\n", b);
System.out.println(b); //这样得到的是一个9位数,可能是这个结果,LZ再自己check一下
你好 谢谢解答byte [] a = { (byte) -60, (byte) 23, (byte) -46, (byte) 8 }; 也就是 byte [] a = { -60, 23, -46, 8 }; a在这里占用4个字节 也就是32bit 这32bit里面 前30bit表示一个属性 后2bit表示另外一个属性所以我需要把这32bit的数据分别取出来...