黑马程序员技术交流社区
标题:
【已解决】 byte转换成int
[打印本页]
作者:
孔德智
时间:
2012-8-28 20:49
标题:
【已解决】 byte转换成int
本帖最后由 孔德智 于 2012-8-29 00:23 编辑
byte b=-1; //1111 1111
int a=b; //此时a的值为 -1 (即11111111 11111111 11111111 11111111)
请问将11111111提升为00000000 00000000 00000000 11111111,为什么说这样可以保留原字节数据不变,又可以避免-1出现
作者:
乔九
时间:
2012-8-28 23:34
在java中由于byte的数值范围,在int的范围之内,也就是说int完全容纳byte的所有值
所以byte转int在java中,是完全按byte值来直接赋给int变量
作者:
谭海鹏
时间:
2012-8-28 23:40
1111-1111这是一个字节这个字节转换成十进制时表示-1,-1用一个int类型来接收是被提升了还是-1,但是用四个字节来表示即:
11111111-->11111111-11111111-11111111-11111111,
如果提升的时候前面不补1补0,这时候表示-1的一个字节被提升到int类型4个字节就不是-1了,即:255
11111111-->00000000-00000000-00000000-11111111
那么只要在前面补0,既可以保留原字节数据不变,又可以避免-1的出现。
接下来就是怎样才能按前面补0这种方法将独到的字节提升到int类型的呢?
11111111-11111111-11111111-11111111
&00000000-00000000-00000000-11111111
-----------------------------------------
00000000-00000000-00000000-11111111
即将读取的那个字节&上255即可。
作者:
夏天
时间:
2012-8-29 00:00
这样理解吧,byte是只能装1个苹果的小箱子。int是能装4个苹果的大箱子。当你把小箱子装到大箱子里,就不会存在溢出等问题。所以可以保留原数据不变。
作者:
孔德智
时间:
2012-8-29 00:22
问题已搞定
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2