用位运算将int i=0xaabbccdd 变成 i=0xddccbbaa,我不知道自己写的代码哪里错了,希望各位可以指出,谢谢
a1错了,应该是左移6位,即 <<64
a3也错了,应该是左移2位,即 <<4
这是用c++编写的,最简单的程序。记得负数右移,补的是符号位。
t = (t1<<24)|(t2<<16)|(t3<<8)|t4
没有调试,但是思路就是这样
先将byte装换成int时位扩展的高位1用&0xff变成0,再进行移位操作,
或者使用& 0xff00、& 0xff0000,对0xff也进行相应的位操作之后的再运算,
代码如下:
package com.ice_qi;
public class Move {
public static void main(String[] args) {
int i = 0xaabbccdd;
byte b1 = (byte)0xdd;
byte b2 = (byte)0xcc;
byte b3 = (byte)0xbb;
byte b4 = (byte)0xaa;
i = (b1 & 0xff)<<24 |
(b2 & 0xff)<<16 |
(b3 & 0xff)<<8 |
(b4 & 0xff)<<0;
System.out.format("%x",i);
}
}