int a = 18874624;
int mask = 0xFF;
// 保存转换字节数组
byte[] index = new byte[4];
// 转换每2字节的结果
for (int i = 0; i < 4; i++) {
index[i] = (byte) ((a >> i * 8) & mask);
}
String s1 = new String(index);
System.out.println(s1);
打印出来的s1乱码了。按理说应该打印出18874624吧。
int mask = 0xFF;
// 保存转换字节数组
byte[] index = new byte[4];
// 转换每2字节的结果
for (int i = 0; i < 4; i++) {
index[i] = (byte) ((a >> i * 8) & mask);
}
String s1 = new String(index);
System.out.println(s1);
打印出来的s1乱码了。按理说应该打印出18874624吧。
int result = index[0] + (index[1]>>8) + (index[1]>>16) + (index[1]>>24);
来反转...你要想用new String()来反转,那要用
(a+"").getBytes()
来换转
{
public static void main(String[] args)
{
//int a = 18874624; //楼主这个数特殊,16进制是0x1200100。
//int a=10526880;
int a=147504615; //16进制是0x8CABDE7。 int mask = 0xFF;
// 保存转换字节数组
byte[] index = new byte[4];
// 转换每2字节的结果
for (int i = 0; i < 4; i++)
{
index[i] = (byte) ((a >> i * 8) & mask);
}
int x=0;
for(int i=0,len=index.length;i<len;i++) //把字节数组数据还原成原数。
{
x=x*(0x100)+changeByteToInt(index[len-1-i]);
}
System.out.println("x is "+x);
/** 字符型办法。
* 把每位数转换成一个ascii字符,放入byte数组。
*/
int b=147504615; //16进制是0x8CABDE7。
String strA=String.valueOf(b); //先变成字符串形式,求出长度。
int length=strA.length();
byte[] by=new byte[length]; //定义一个数位刹那高度的byte数组。
for(int i=length-1;i>=0;i--) //把每一位转成字符。
{
by[i]=(byte)(b%10+'0'); //转换ascii码了。
b=b/10;
}
String strB=new String(by);
System.out.println(strB);
}
/** 把一个字节数据转换成正的整数的方法。
* 字节数大于128<255,java 都任成负数了。不能直接计算。
*/
public static int changeByteToInt(byte b)
{
return b<0?0x80+0x7f&b:b; //小于128直接输出,大于的话转换一下。
}
}