请高手解释一下byte[] 转化为int型

cxq56677838 2008-04-02 09:13:50
public static int byteToint(byte[] b)
{
int s = 0;
for (int i = 0; i < 3; i++)
{
if (b[i] >= 0)
s = s + b[i];
else
s = s + 256 + b[i];
s = s * 256;
}
if (b[3] >= 0)
s = s + b[3];
else
s = s + 256 + b[3];
return s;
}
请一步一步解释,谢谢
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxq56677838 2008-04-02
  • 打赏
  • 举报
回复
这是一个SQL解释器程序数字转换的方法
nihuajie05 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 k7sem 的回复:]
public static int byteToInt(byte[] b)
{
if(b.length < 4 ¦ ¦ b.length > 4)
{
return 0;
}else
{
return (int )( ( ( b[0] & 0xff ) < < 24)
¦ ((b[1] & 0xff ) < < 16 )
¦ ((b[2] & 0xff) < < 8 )
¦ (b[3] & 0xff) ) ;
}
}
[/Quote]
我也觉得这个比较好理解。。。个人认为
想问你问题的代码来源。。。呵呵
dracularking 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cxq56677838 的回复:]
那么byte[] b 会装些什么样的数据?能举例一下吗?如byte[] b=?
[/Quote]
如果有强制转换的话 任何Integral型都可以
值==originalValue%(2^8)
cxq56677838 2008-04-02
  • 打赏
  • 举报
回复
这样啊。谢谢师兄
贝壳鱼 2008-04-02
  • 打赏
  • 举报
回复
public static int byteToInt(byte[] b)
{
if(b.length < 4 || b.length > 4)
{
return 0;
}else
{
return (int )( ( ( b[0] & 0xff ) << 24)
| ((b[1] & 0xff ) << 16 )
| ((b[2] & 0xff) << 8 )
| (b[3] & 0xff) ) ;
}
}
kevinchj 2008-04-02
  • 打赏
  • 举报
回复
电脑中数据都是二进制,对吧,那么byte[]就相当于把这些二进制按8位8位的封装起来,
所以,byte[]可以装所有类型的数据。
cxq56677838 2008-04-02
  • 打赏
  • 举报
回复
那么byte[] b 会装些什么样的数据?能举例一下吗?如byte[] b=?
kevinchj 2008-04-02
  • 打赏
  • 举报
回复
从最高的8位读起,如果大于0,则直接+上该8位的值,如果小于0,则需取补码,于是加上256。
一个int有4个byte,只有最后一个byte不用*256。
不明白再问。
dracularking 2008-04-02
  • 打赏
  • 举报
回复
就是那个乘以256可能有特殊业务要求 否则就是按unsigned byte叠加规则

62,623

社区成员

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

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