如何将一个四字节转换为一个整数?以及反过来? java
答案:2 悬赏:30
解决时间 2021-03-09 22:26
- 提问者网友:心牵心
- 2021-03-09 10:14
如何将一个四字节转换为一个整数?以及反过来? java
最佳答案
- 二级知识专家网友:街头电车
- 2021-03-09 10:36
关于错误,是在这里
int a = bytes[0]<<24+bytes[1]<<16+bytes[2]<<8+bytes[3];
+与<< 运算符会先算+
所以上面算式变成bytes[0]<<46<<38<<30
很显然经过这么多次左移
a肯定等于0
把算式里面每一项加个括号就可以了
int a = (bytes[0]<<24)+(bytes[1]<<16)+(bytes[2]<<8)+bytes[3];
————————
数字在计算机里面是以二进制存储的
比如22是00010110追问左移是变大啊,怎么会变小呢?是溢出了吗? 那么int改为long还是不行。
并且按照你改的还是不正确。
你写个程序贴上来我看一下吧,要求就是[22,22,22,22]结果是22222222 然后反过来再写一个方法,可以运行的
算了,位置这个走不通,或者你有时间写完贴上来给我看一下,我用字符串拼接解决了这个问题,换个思路。 我先采纳了。
int a = bytes[0]<<24+bytes[1]<<16+bytes[2]<<8+bytes[3];
+与<< 运算符会先算+
所以上面算式变成bytes[0]<<46<<38<<30
很显然经过这么多次左移
a肯定等于0
把算式里面每一项加个括号就可以了
int a = (bytes[0]<<24)+(bytes[1]<<16)+(bytes[2]<<8)+bytes[3];
————————
数字在计算机里面是以二进制存储的
比如22是00010110追问左移是变大啊,怎么会变小呢?是溢出了吗? 那么int改为long还是不行。
并且按照你改的还是不正确。
你写个程序贴上来我看一下吧,要求就是[22,22,22,22]结果是22222222 然后反过来再写一个方法,可以运行的
算了,位置这个走不通,或者你有时间写完贴上来给我看一下,我用字符串拼接解决了这个问题,换个思路。 我先采纳了。
全部回答
- 1楼网友:走死在岁月里
- 2021-03-09 11:57
考察的是移位运算,高效率实现几个数字字符拼接成一个整数
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯