感觉没什么错,但是期望的结果是8143,而运行结果为7887

package java中的数据类型;
//整形转化成字节型
public class Int_to_Byte {
//int转化为字节数组
 public static byte change(int b){
  byte[] arr=new byte[4];
  arr[0]=(byte)((b>>0*8));
  return arr[0];
 }
 public static byte[] change2(int a){
  byte[] arr1=new byte[4];
  for(int i=0;i<arr1.length;i++){
   arr1[i]=(byte)((a>>i*8));
  }
  return arr1;
 }
 //byte型转化成int型
 public static int[] cheng3(byte[]arr){
  int arr2[]=new int[4];
  for(int i=0;i<arr.length;i++){
   arr2[i]=(int)(arr[i]<<i*8);
  }
  return arr2;
 }
 //输出
 public static void main(String arges[]){
 byte arr=Int_to_Byte.change(8143);
  System.out.println(arr);
  byte arr1[]=Int_to_Byte.change2(8143);
  System.out.println(arr1[0]+" "+arr1[1]+" "+arr1[2]+" "+arr1[3]);
  int arr2[]=Int_to_Byte.cheng3(arr1);
  System.out.println(arr2[0]+arr2[1]+arr2[2]+arr2[3]);
 }
}

慕粉13727861792
浏览 1003回答 1
1回答

按照自己的节奏前行

//闲的无聊,帮你看看你哪里错了,我给你做了注释 public class Int_to_Byte { //int转化为字节数组  public static byte change(int b){  //这个玩意写的乱七八糟,没用   byte[] arr=new byte[4];    arr[0]=(byte)((b>>0*8)); //这里你相当于没有移位,把一个int类型进行强转,结果失真,默认保留最后8位,                             //但是,小朋友,byte是一个8位的,且带符号,这个你得到出来的范围肯定在-127到128之间   return arr[0];           //没用,因为并不是你写个4位的数字,每个数字都占一个字节,想想吧,孩子,前面要补0的  }  public static byte[] change2(int a){   byte[] arr1=new byte[4];   for(int i=0;i<arr1.length;i++){    arr1[i]=(byte)((a>>i*8));   //向右移动一位相当于除以2.嗯,你可以想想,你在干啥,依次除以2的8次方的                                //8的次方的..,没错,你是移动了1个字节,但是不代表你数字也移动了一位                                //还有,转化失真   }   return arr1;  }  //byte型转化成int型  public static int[] cheng3(byte[]arr){  //你以为这是字符串吗?拼一拼就出来了...哈哈哈哈,进制转化多看看   int arr2[]=new int[4];   for(int i=0;i<arr.length;i++){    arr2[i]=(int)(arr[i]<<i*8);   }   return arr2;  }  //输出  public static void main(String arges[]){   //这里就没啥说的了,你理解的误区是一个字节代表数字的某个位,                                             //嗯,这样说吧,你想每次移动一个字节,那就需要2的八次方进制来做,                                             //这还只是无符号的,这样的话,你得到的哪一位就是当前位数的数字,                                             //十进制吗,你移动一个字节是想发泄自己的不满吗?  byte arr=Int_to_Byte.change(8143);   System.out.println(arr);   byte arr1[]=Int_to_Byte.change2(8143);   System.out.println(arr1[0]+" "+arr1[1]+" "+arr1[2]+" "+arr1[3]);   int arr2[]=Int_to_Byte.cheng3(arr1);   System.out.println(arr2[0]+arr2[1]+arr2[2]+arr2[3]);  } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java