怎样把byte[] 转为long(不用移位) 不用位移,试试memcpy吧以下代码没有测试,仅供参考:byte xl[4] = {0x10, 0x20, 0x30, 0x40};long x = 0;memcpy(&x, xl, 4);没有试,不知道行不行 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 包子,你说的把byte[]转为long,是什么意思啊?举个例子吧~ 比如我在做一个网络通讯工具,得到一个4为的byte:byte[] x1 = new byte[4];该通信协议规定这个4位byte是一个longlong x;就是怎样把x1 的值转为x 需要注明的是,该通讯协议可能是对c++写的,这32位应该是无整型int,所以我要用long 这样一个思路,不知道行不行:初始量是:byte[] x1 = {1,2,3,4};long x = 0;我们要的结果是:x的值为1234(壹千贰佰叁拾肆)。对吧!思路为:x = 1*10*10*10 + 2*10*10 + 3*10 + 4; 最简单的,使用Buffer操作: ByteBuffer buffer=ByteBuffer.allocate(4); buffer.put(new byte[]{0,0,1,1}); buffer.flip(); int intValue=buffer.getInt(); System.out.println(intValue);那么数据为0000 0000 0000 0000 0000 00010000 0001,所以结果为257 想不通为什么不用移位。long l = 0;byte bs[]={0xf,0xf,0xf,0xf};l=bs[0]|(bs[1]<<4)|(bs[2]<<8)|(bs[3]<<12);这样多方便啊 shangqiao(伤桥(千万不要理解为我可怜桥,是“伤心桥下”的缩写) :用int就是不行因为对方是无符号整形,只有用long cooled(青山依旧) 移位移错了?是不是应该每个移8位阿? javamail发送附件不通过也不报错 ClassNotFoundException 求助 日期对日期加减 有没有关于java底层开发的书籍? 关于JList的问题 会使用JFREECHAERT的来看看 如何将从JTextField中得到的字符串写到数据库中的日期型列里 如何读取源文件所在当前目录? java到底用在哪些地方? 请各位兄弟帮小弟一下(刚初学-配置总出错)请指教 谢谢大家帮助 java.lang.NoSuchMethodError: main 怎么解决?? 問各有關LINUX的問題
byte[] x1 = new byte[4];
该通信协议规定这个4位byte是一个long
long x;
就是怎样把x1 的值转为x
初始量是:
byte[] x1 = {1,2,3,4};
long x = 0;
我们要的结果是:
x的值为1234(壹千贰佰叁拾肆)。对吧!思路为:x = 1*10*10*10 + 2*10*10 + 3*10 + 4;
ByteBuffer buffer=ByteBuffer.allocate(4);
buffer.put(new byte[]{0,0,1,1});
buffer.flip();
int intValue=buffer.getInt();
System.out.println(intValue);
那么数据为
0000 0000
0000 0000
0000 0001
0000 0001
,所以结果为257
long l = 0;
byte bs[]={0xf,0xf,0xf,0xf};
l=bs[0]|(bs[1]<<4)|(bs[2]<<8)|(bs[3]<<12);
这样多方便啊
用int就是不行因为对方是无符号整形,只有用long
移位移错了?是不是应该每个移8位阿?