本帖最后由 kaka小明 于 2013-5-2 11:54 编辑
java中的数值基本数据类型均为有符号数据,负数存储形式为其补码,需要对把负数的补码转换成无符号数,代码如下:
public static byte[] intToByte(int cmd) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream ds = new DataOutputStream(baos);
try {
ds.writeInt(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return baos.toByteArray();
}
public static void main(String[] args) {
int packageMark = 0x5544a1a1;
byte[] bye = new byte[4];
bye = intToByte(packageMark);
for(int i=0; i<bye.length; i++) {
int tmp=bye;//java中的byte short int long均为有符号类型,目前java没有无符号数据类型,0xa1的最高位为1当然会打印负数,
if(tmp<0)
tmp+=256;//如果为负数,如-1,那么你想要的正数为0xff,需要加上byte的模256,准换成无符号数据显示。
System.out.print(tmp+" ");
}
} |