获取java byte的无符号数值
2018-02-07 14:57
381 查看
[java]
view plain
copy
byte a = (byte)234;
System.out.println(a);
上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127。
如果想输出234,该怎么做呢,首先想到的是将a 赋给大一点的类型,如下:
[java]
view plain
copy
byte a = (byte)234;
int i = a;
System.out.println(a);
执行后,还是-22,因为int也是有符号的,所以a赋给i时,a的符号位在i中成为了i的符号位。
正确方法应该是:
[java]
view plain
copy
byte a = (byte)234;
int i = a;
i = a&0xff;
System.out.println(i);
原因是:
0xff是int,占4个字节,a是byte,占1个字节,进行&操作的细节如下:
00000000 00000000 00000000 11101010 (a)
&
00000000 00000000 00000000 11111111 (i)
---------------------------------------------------------------------
= 00000000 00000000 00000000 11101010
结果是int,但是符号位是0,说明是正数,最后就是正整数234.
其实这个方法在C语言中也可以获取有符号char的无符号值,但是C语言中可以直接使用unsigned来转换就可以,比这个方便。
http://blog.csdn.net/hknaruto/article/details/51303092
view plain
copy
byte a = (byte)234;
System.out.println(a);
上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127。
如果想输出234,该怎么做呢,首先想到的是将a 赋给大一点的类型,如下:
[java]
view plain
copy
byte a = (byte)234;
int i = a;
System.out.println(a);
执行后,还是-22,因为int也是有符号的,所以a赋给i时,a的符号位在i中成为了i的符号位。
正确方法应该是:
[java]
view plain
copy
byte a = (byte)234;
int i = a;
i = a&0xff;
System.out.println(i);
原因是:
0xff是int,占4个字节,a是byte,占1个字节,进行&操作的细节如下:
00000000 00000000 00000000 11101010 (a)
&
00000000 00000000 00000000 11111111 (i)
---------------------------------------------------------------------
= 00000000 00000000 00000000 11101010
结果是int,但是符号位是0,说明是正数,最后就是正整数234.
其实这个方法在C语言中也可以获取有符号char的无符号值,但是C语言中可以直接使用unsigned来转换就可以,比这个方便。
http://blog.csdn.net/hknaruto/article/details/51303092
相关文章推荐
- 获取java byte的无符号数值
- 获取java byte的无符号数值
- 获取java byte的无符号数值
- 获取java byte的无符号数值
- java byte的无符号数值
- java 基本数值类型:byte short int long float double char
- Java中byte的符号位
- java 无符号16进制字符串转换为有符号Byte[]
- Java中获取特定符号中间字符串子串的方法
- 对Java语言的byte类型变量进行无符号提升
- Java关于链表的增加、删除、获取长度、打印数值的实现
- java 将long类型的数值转无符号数
- 字节数值Java根据汉字获取汉字对应的首字母
- java byte转无符号int
- Java中double和byte数值之间的转换
- kotlin&java - byte 数组转 int 数据,有符号和无符号转换类
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- java中int值转化为byte的符号问题
- Java中byte的符号位
- 关于java各种类型转化为无符号和类型转化为byte数组的方法