你们照课程byte能转换成long?
老师讲的还不错,最后那个long型写的有问题,实际操作byte数组转换long会出错。。因为在转换的途中,向左位移的时候实际还是按int去位移的,int是32位,所以在位移时应该提前将之转换为64位的long,然后左移i*8位就可以了。
long result=0L;for(int i=0;i<arr.length;i++){ result+=(long) (((long)(arr[i]&0xff))<<(i*8)); }
老师讲的还不错,最后那个long型写的有问题,实际操作byte数组转换long会出错。。因为在转换的途中,向左位移的时候实际还是按int去位移的,int是32位,所以在位移时应该提前将之转换为64位的long,然后左移i*8位就可以了。
long result=0L;for(int i=0;i<arr.length;i++){ result+=(long) (((long)(arr[i]&0xff))<<(i*8)); }
2017-04-14
举报