如何将一个四字节转换为一个整数?以及反过来? java
这个问题考察的意义何在?packagefoundation;importjava.util.Arrays;//如何将一个四字节转换为一个整数?以及反过来?publiccl...
这个问题考察的意义何在?
package foundation;
import java.util.Arrays;
//如何将一个四字节转换为一个整数?以及反过来?
public class Test7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// byte []a={1,2,3,4};
// int b=
byte bytes []= {22,22,22,22};
int a = bytes[0]<<24+bytes[1]<<16+bytes[2]<<8+bytes[3];
System.out.println(a);//检验结果
byte bytes2[]=new byte[4];
bytes[0]=(byte)(a>>24);
bytes[1]=(byte)((a>>16)&0xff);
bytes[2]=(byte)((a>>8)&0xff);
bytes[3]=(byte)(a&0xff);
System.out.println(Arrays.toString(bytes));//检验结果
}
}
这是答案,第一个输出是0,第二个是[0,0,0,0] 应该是错了。还有,这个数字代表的编码和实际上的数字的关系是什么,字母呢,可以系统的给我讲一下吗?这个考察的是这个知识点吗?
为什么数组的每一个元素要依次左移8位,然后还要递增? 展开
package foundation;
import java.util.Arrays;
//如何将一个四字节转换为一个整数?以及反过来?
public class Test7 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// byte []a={1,2,3,4};
// int b=
byte bytes []= {22,22,22,22};
int a = bytes[0]<<24+bytes[1]<<16+bytes[2]<<8+bytes[3];
System.out.println(a);//检验结果
byte bytes2[]=new byte[4];
bytes[0]=(byte)(a>>24);
bytes[1]=(byte)((a>>16)&0xff);
bytes[2]=(byte)((a>>8)&0xff);
bytes[3]=(byte)(a&0xff);
System.out.println(Arrays.toString(bytes));//检验结果
}
}
这是答案,第一个输出是0,第二个是[0,0,0,0] 应该是错了。还有,这个数字代表的编码和实际上的数字的关系是什么,字母呢,可以系统的给我讲一下吗?这个考察的是这个知识点吗?
为什么数组的每一个元素要依次左移8位,然后还要递增? 展开
2个回答
展开全部
关于错误,是在这里
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 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 然后反过来再写一个方法,可以运行的
算了,位置这个走不通,或者你有时间写完贴上来给我看一下,我用字符串拼接解决了这个问题,换个思路。 我先采纳了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询