无符号1byte转int
在java基本类型中byte是有正负之分,它的取值范围-128到127,有时候在网络编程里我们只需要正数,于是会约定1byte是无符号的,它的取值范围在255-0。那么我们怎么将无符号的1byte转为int呢?
int转4byte
public static byte[] intToBytes(int data) {
// int=4byte
return new byte[] { (byte) ((data >> 24) & 0xFF), (byte) ((data >> 16) & 0xFF), (byte) ((data >> 8) & 0xFF),
(byte) (data & 0xFF) };
}
int转1byte
丢掉前3byte或者使用下面代码
public static byte[] intTo1Bytes(int data) {
return new byte[] { (byte) (data & 0xFF) };
}
4byte转int
public static int bytesToInt(byte[] data) {
return data[3] & 0xFF | (data[2] & 0xFF) << 8 | (data[1] & 0xFF) << 16 | (data[0] & 0xFF) << 24;
}
1byte转int(无符号)
public static int bytesToPositiveInt(byte[] data) throws Exception {
if (data == null || data.length > 3) {
throw new Exception("data不能为null并且不能超过3位");
}
byte[] destBytes = new byte[4];
System.arraycopy(data, 0, destBytes, data.length, destBytes.length - data.length);
return bytesToInt(destBytes);
}
例子
int类型255,转4byte为[0, 0, 0, -1],去掉前3个byte为[ -1],若直接拿byte的值为-1(与255不等),若补齐3byte再转为int得到255,与原值相等。
无符号1byte转int的更多相关文章
- int有符号和无符号类型内存 -- C
/* int 有符号 0xffffffff == -1 0xfffffffe == -2 最小 0x80000000 == -21 4748 3648 最大 0x7fffffff == 21 4748 ...
- c++ 有符号int和无符号int做加减乘除问题
c++ 有符号int和无符号int做加算术运算的问题: 一.运算过程先把有符号的补码数直接看成无符号数,在和无符号数进行算术运算 二.int和unsigned int类型进行混合算数运算时,运算结果为 ...
- 有符号char转无符号short
; cout<<(int)ch<<endl; //-1 unsigned short d = ch; short dd = ch; cout<<d<<e ...
- unsigned无符号、有符号类型的符号拓展
先看一段代码 #include <stdio.h> main(){ unsigned ; char b = a; printf("%d %d",a,b); ; } a输 ...
- java 无符号byte转换
java中的byte类型是有符号的,值得范围是-128-127 做网络通讯时,接收过来的数据往往都是无符号的byte,值得范围是0-255 因此直接转换时,存储到java显示的值就会有问题 int o ...
- 深入理解计算机系统(2.4)---C语言的有符号与无符号、二进制整数的扩展与截断
开篇请各位猿友允许LZ啰嗦几句,最近一直在写计算机系统原理这系列文章,也已经下定决心要把这本书的内容写完.主要目的其实是为了巩固LZ的理解,另外也想把这些内容分享给猿友们,毕竟LZ觉得这些内容对程序猿 ...
- Java-java中无符号类型的处理
在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换. 方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stre ...
- java有符号无符号的转换
数据处理中常常遇到基本数据类型的操作,java都是有符号的数据,而与下位机通信中常常遇到无符号的比如uint8, uint16,uint32等等 1.为了完成这个功能还专门采用ByteBuffer的方 ...
- JavaScript 32位整型无符号操作
在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢? 有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数. 数值范围从 -2^ ...
随机推荐
- 爬虫之urllib
一.request模块 1.urlopen() --返回值为HTTPResponse对象 urlopen(url, data=None, timeout=socket._GLOBAL_DEFA ...
- HDU - 3567
https://cn.vjudge.net/problem/HDU-3567 #include <stdio.h>#include <math.h>#include <q ...
- bootstrap学习1
1.form-control -宽度变成了100% -设置了一个浅灰色(#ccc)的边框 -具有4px的圆角 -设置阴影效果,并且元素得到焦点之时,阴影和边框效果会有所变化 -设置了placehold ...
- 统计不同渠道的的UV,再合计渠道总计UV
( SELECT `统计时间`, `贷款公司名称`, `推广员姓名`, UV FROM ac_statistics WHERE `贷款公司名称` = "金腰袋" AND `统计时间 ...
- Linux命令:内建命令
本文对内建命令进行归类,便于学习和记忆. 分类 内建命令 同义词 功能相反命令 定义&声明类 alias unalias declare typeset local reado ...
- python学习笔记记录
计算机基础知识: 随机存储器就是内存,缺点是断电数据丢失:优点:读写数据速度快. 外存储器硬盘 有点断电数据保存 缺点:读写速度慢 操作系统:是一个特异功能的程序,操作系统扮演了用户与计算机之间的桥梁 ...
- pyqgis学习
1. 错误:ImportError: No module named qgis.core解决方法:python的qgis,初始化变量:D:\PROGRA~1\QGIS3~1.0\OSGeo4W.bat ...
- opencv 之 transformation
getAffineTransform() : calculates an affine transform from three pairs of the corresponding points. ...
- Nancy.Net之旅-探索模块
探索Nancy模块 模块是任何Nancy应用程序中的主角,因为它是您定义应用程序行为的地方,所以无法避免使用它. 事实上,在任何的Nancy应用程序中,声明模块是最基本的要求. 通过继承NancyMo ...
- Ubuntu---添加输入法
摘要:Ubuntu 在刚刚安装好之后,默认是不支持直接输入中文的,所以我们需要安装支持中文的输入法.网络上面一般推荐使用的输入法是 Fcitx(小企鹅输入法),我们今天就来安装和配置它. step1: ...