为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我类型转换之后结果不对了?

public class demo01 {
    public static byte[] int2Bytes(int id) {
        byte[] arr = new byte[4];

        for (int i = 0; i < arr.length; i++) {
            arr[i] = (byte) (int) ((id >> i * 8) & 0xff);
        }
        return arr;
    }

    public static int byte2Int(byte[] arr) {
        int result = 0;
        for (int i = 0; i < arr.length; i++) {
            int s = (int) ((arr[i] & 0xff) << i * 8);
            result = result + s;
        }
        return result;
    }

    public static byte[] long2Bytes(int id){
        byte[] arr = new byte[8];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = (byte) (long) ((id >> i * 8) & 0xff);
        }
        return arr;
    }

    public static long byte2Long(byte[] arr){
        long result = 0;
        for (int i = 0; i < arr.length; i++) {
            long s = (long) ((arr[i] & 0xff) << i * 8);
            result = result + s;
        }
        return result;
    }


    public static void main(String[] args) {
        byte[] arr = demo01.int2Bytes(8143);
        for (int in : arr
        ) {
            System.out.print(in + ",");
        }
        System.out.println();
        System.out.println(demo01.byte2Int(arr));

        byte[] arr2 = demo01.long2Bytes(8143);
        for (int in : arr2
        ) {
            System.out.print(in + ",");
        }
        System.out.println();

        System.out.println(demo01.byte2Long(arr2));
    }
}


正在回答

1 回答

是不是23行那个括号括错地方了,

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
二进制基础
  • 参与学习       99900    人
  • 解答问题       210    个

二进制是计算机唯一能识别的语言,是学习计算机技术必备的知识

进入课程

为什么我类型转换之后结果不对了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信