发现理解错你的意思,你只是需要将int转储为byte[]: int a = 2012; byte[] bs = new byte[2]; bs[0] = (byte) (a & 0xff); bs[1] = (byte) ((a >> 8) & 0xff);
for example int n = 2012; byte[] b = new byte[4]; //原则上,int需要4个byte,LZ只想保存低2字节也可以 for (int i=0; i<4; i++) { b[4-i-1] = (byte)((n>>(8*i)) & 0xff); } for (byte bb : b) { System.out.printf("%04x\n", bb); }
char[] cs = str.toCharArray();
for (char c:cs) {
System.out.println(Integer.toHexString(12));
}
byte[] bs = new byte[2];
bs[0] = (byte) (a & 0xff);
bs[1] = (byte) ((a >> 8) & 0xff);
int n = 2012;
byte[] b = new byte[4]; //原则上,int需要4个byte,LZ只想保存低2字节也可以
for (int i=0; i<4; i++) {
b[4-i-1] = (byte)((n>>(8*i)) & 0xff);
}
for (byte bb : b) {
System.out.printf("%04x\n", bb);
}
byte[] bs = {(byte)0xdc, (byte)0x07};
System.out.println(bs[0]);
System.out.println(bs[1]);
byte[0] = Integer.parseInt(hexstr, 16);
System.out.println(new HexInt(2012).toHexString(true, true));
System.out.println(new HexInt(2012).toHexString(true, false));
System.out.println(new HexInt(2012).toHexString(false, true));
System.out.println(new HexInt(2012).toHexString(false, false));
//如果仅仅是简单输出,可以如下转换
int mask = 0x0000000f;
String str = "0x";
for(int value = 2012,i=7; i >= 0;--i)
str += Integer.toHexString(((value >> i*4) & mask));
System.out.println(str);
class HexInt{
private int value; //保存该int数字,可能后续会使用到
private byte[] bArr = new byte[4]; //该int数字对应的byte数组
public HexInt(int value){
this.value = value;
for(int i = 0; i < 4; ++i){
bArr[i]= (byte)(value >> (3-i)*8);
// System.out.println(i + ":" + bArr[i] + ":" + Integer.toHexString(bArr[i]));
}
}
//输出该int数字对应的16进值,prefix=true:输出前导0x,zero=true:输出前导0
//当然我们也可以在定义prefix,zero为成员变量,并在构造函数中对其赋值,这样就可以
//定义一个不带参数的toHexString,这里仅做演示,你可以自己优化
public String toHexString(boolean prefix,boolean zero){
String ret = "";
int mask = 0x0000000f;
if(prefix)
ret += "0x";
for(int i = 0; i < 4; ++i){
for(int j = 0; j < 2; ++j){
byte hilo = (byte)((bArr[i]>>(1-j)*4) & mask);
if(hilo != 0 || (0 == hilo && zero)){
ret += Integer.toHexString(hilo);
}
}
}
return ret;
}
}