获取java byte的无符号数值
byte a = (byte)234;
System.out.println(a);
上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127。
如果想输出234,该怎么做呢,首先想到的是将a 赋给大一点的类型,如下:
byte a = (byte)234;
System.out.println(a); int i = a;
System.out.println(a);
执行后,还是-22,因为int也是有符号的,所以a赋给i时,a的符号位在i中成为了i的符号位。
正确方法应该是:
byte a = (byte)234;
System.out.println(a); int i = a;
System.out.println(a); i = a&0xff;
System.out.println(i);
原因是:
0xff是int,占4个字节,a是byte,占1个字节,进行&操作的细节如下:
00000000 00000000 00000000 11101010 (a)
&
00000000 00000000 11111111 11111111 (i)
---------------------------------------------------------------------
= 00000000 00000000 00000000 11101010
结果是int,但是符号位是0,说明是正数,最后就是正整数234.
其实这个方法在C语言中也可以获取有符号char的无符号值,但是C语言中可以直接使用unsigned来转换就可以,比这个方便。
获取java byte的无符号数值的更多相关文章
- java byte转无符号int
import java.io.ByteArrayInputStream; public class Test{ public static void main(String[] args) { byt ...
- 为什么 Java 不提供无符号类型呢?
网上查资料,无意中找到一个java写的开源论坛,用的人还挺多 http://jforum.net/ 查MD5,了解到 Java getBytes方法详解(字符集问题) http://liushilan ...
- Java 与无符号那些事儿
最近在使用 Java 作为 WebSocket 客户端连接 Node.js 的 WebSocket 服务器的时候,由于使用的客户端库比较老,所以遇到了字节符号的问题,上网查了一下,看到这篇文章写的很有 ...
- 利用Java位运算符,完成Unsigned转换(无符号)
方案二:利用Java位运算符,完成Unsigned转换. 正常情况下,Java提供的数据类型是有符号signed类型的,可以通过位运算的方式得到它们相对应的无符号值,参见几个方法中的代码: publi ...
- JAVA byte有无符号数的转换
如果你只需要对英文文本的每个字节进行数据处理,则无需考虑有符号数和无符号数的转换问题: 但如果你需要对含有中文的文本进行字节处理,则可能需要考虑有无符号数的转换问题. 以下代码均为Java代码. 1. ...
- java 无符号byte转换
java中的byte类型是有符号的,值得范围是-128-127 做网络通讯时,接收过来的数据往往都是无符号的byte,值得范围是0-255 因此直接转换时,存储到java显示的值就会有问题 int o ...
- java无符号Byte
1.无符号byte, 实现了将byte(-128~127) 转换为 (0~255) class UnsignedByte { private short value; private byte raw ...
- java有符号无符号的转换
数据处理中常常遇到基本数据类型的操作,java都是有符号的数据,而与下位机通信中常常遇到无符号的比如uint8, uint16,uint32等等 1.为了完成这个功能还专门采用ByteBuffer的方 ...
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规 ...
随机推荐
- android LinearLayout和RelativeLayout实现精确布局
先明确几个概念的区别: padding margin:都是边距的含义,关键问题得明白是什么相对什么的边距padding:是控件的内容相对控件的边缘的边距. margin :是控件边缘相对父空间的边距 ...
- xpage 获取 附件
var db:NotesDatabase=session.getCurrentDatabase(); var doc:NotesDocument=db.getDocumentByUNID('80E21 ...
- 开发板-PC机(宿主机)-虚拟机(VM)之间网络通信设置方法及须要注意的问题
1.不使用路由器交换机 硬件连接: 使用网线将开发板和PC机相连 串口线将PC机和开发板相连 使用命令: ifconfig -a 串口控制端查看开发板的网络配置 route -n 串口控制端查看开发板 ...
- MVC设计模式JavaWeb实现
JSP开发模式 jsp开发模式的发展 1.模式1:(适合小型项目的技术的开发) a.第一版本号.纯jsp(封装数据.处理数据,显示数据) b.第二版本号,Jsp+JavaBean. ...
- 学习:WordXML格式初步分析
Office2003以上,Word可以以XML文本格式存储,这样就可以使用外部程序创建Word文件,而不需要使用Word的对象.也能够自由的打开分析Word文件,或者发布到自己的Web页面,或者其他更 ...
- 在Visual Studio中使用FFTW库
FFTW不用做过多介绍,一般都是在linux下使用,包括放出windows版的作者也自己声明:we don't use Windows ourselves 但是由于要和MIC混合编程,想先在本地使用, ...
- bootstrap基础知识点YI
<!DOCTYPE html> <html lang="en"> ... </html> bootstrap页面都应该包含html5声明. 框架 ...
- javascript 检测密码强度
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Windows Phone 8初学者开发—第5部分:布局和事件基础
原文 Windows Phone 8初学者开发—第5部分:布局和事件基础 原文地址: http://channel9.msdn.com/Series/Windows-Phone-8-Developme ...
- 王立平--android事件监听的3种方式
第一种通常在activity组件的oncreate事件中直接定义,直接动作. 这样的方式每一个控件都定义一次.通常不方便. Button btn = (Button) findViewById(R.i ...