一个小函数,大家帮我看看吧!!

Dr_FIA 2010-04-20 02:57:17
自己写的一个Int转byte数组的函数,由于int为32为,byte为8位,所以用byte[4]来接受一个int
代码如下:
public byte[] itob(int i)
{
byte[] b={0,0,0,0};
b[0]=(byte)(b[0]|i);
for(int m=1;m<=3;m++)
{
i=i>>8;
b[m]=(byte)(b[m]|i);
}
return b;
}
public int btoi(byte[] b,int s)
{
int i=0;
i=i|b[s];
for(int m=1;m<=3;m++)
{
i=i<<8;
i=i|b[s+m];
}
return i;
}
可是运行结果int转为byte[]再转回来却错了,请帮我挑挑问题吧
...全文
83 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
guangmingdeshenju 2010-04-21
  • 打赏
  • 举报
回复
开始用不着进行或运算
java位运算时,会自动将位小的数补齐,所以byte|int,结果就是int,而强制转换时,int->byte,是取的
低八位,所以itob,顺序要反过来哦
(这个代码到底要怎么贴哦?)
guangmingdeshenju 2010-04-21
  • 打赏
  • 举报
回复
[code=Java][/public class test {

public byte[] itob(int i)
{
byte[] b={0,0,0,0};
b[0]=(byte)i;
for(int m=1;m<=3;m++)
{
i=i>>8;
b[m]=(byte)i;
}
return b;
}
public int btoi(byte[] b)
{
int i=0;
i=i|b[3];
for(int m=2;m>=0;m--)
{
i=i<<8;
i=i|b[m];
}
return i;
}
public static void main(String args[]){
test te = new test();
int j = 34;
int ss = te.btoi(te.itob(j));
System.out.println(ss);


}
}
]
guangmingdeshenju 2010-04-21
  • 打赏
  • 举报
回复
public class test {

public byte[] itob(int i)
{
byte[] b={0,0,0,0};
b[0]=(byte)i;
for(int m=1;m<=3;m++)
{
i=i>>8;
b[m]=(byte)i;
}
return b;
}
public int btoi(byte[] b)
{
int i=0;
i=i|b[3];
for(int m=2;m>=0;m--)
{
i=i<<8;
i=i|b[m];
}
return i;
}
public static void main(String args[]){
test te = new test();
int j = 34;
int ss = te.btoi(te.itob(j));
System.out.println(ss);


}
}
bawgiitx 2010-04-20
  • 打赏
  • 举报
回复
public byte[] itob(int i){

byte[] b={i>>>24|0xff,i>>>18|0xff,i>>>8|0xff,i|0xff};
return b
}

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧