黑马程序员技术交流社区
标题:
字节和int之间的转换,求教。。。
[打印本页]
作者:
马姗姗
时间:
2014-1-6 13:50
标题:
字节和int之间的转换,求教。。。
本帖最后由 马姗姗 于 2014-1-6 22:04 编辑
byte[] buffer ;
int[] databuf =new int[buffer.length];
for (int i = 0; i < buffer.length; i++) {
databuf
= (int) ((buffer
+ 256) % 256);
}
求大神解释下循环中的意思
作者:
悠然的我
时间:
2014-1-6 15:12
这么搞一下就该看明白了吧
byte[] buffer = {-128,-127,-2,-1,0,1,2,126,127};
int[] databuf = new int[buffer.length];
System.out.println(Byte.MIN_VALUE+"***"+Byte.MAX_VALUE);
for (int i = 0; i < buffer.length; i++)
{
databuf[i] = (int) ((buffer[i] + 256) % 256);
System.out.print(databuf[i]+",");
}
输出结果:
-128***127
128,129,254,255,0,1,2,126,127,
//这不就正好把byte类型转化成正数的int类型了,只不过负值被转化到了128~255之间。
作者:
小泉真也
时间:
2014-1-6 15:47
byte[] buffer;//声明一个byte类,命名为buffer
int[] databuf = new int[buffer.length];//创建一个int类型 名叫 databuf的数组,其元素个数为 buffer.length
for (int i = 0; i < buffer.length; i++)
{
databuf[i] = (int) ((buffer[i] + 256) % 256);
}
循环的意思是:
【1】定义一个变量i等于0,判断i是否小于buffer.length,如果小于,执行下面的语句
【2】databuf[i] = (int) ((buffer[i] + 256) % 256);
先把 databuf数组中 角标是[i]的元素 与 256 相加的结果再和 256 求余,所得的结果强制转换成int类型,再把这个结果赋值 给databuf数组中 角标是[i]的这个元素
【3】然后i+1,再回到第二个条件,判断i是否小于buffer.length 如果小于,再循环一次【1】【2】;如果大于,那循环结束
复制代码
简单的分析了一下过程和内容,若有不足,见谅。先供你参考。
作者:
董月峰
时间:
2014-1-7 13:55
java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte。
int 是非负整数类型
databuf = (int) ((buffer + 256) % 256);
就是把负的byte数字转换成非负的
作者:
午夜b'Boy
时间:
2014-1-7 16:46
还可以这样搞法,还以为自动提升呢,真是看不懂
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2