java byte数组与int之间相互转换
位运算
位运算 | 说明 | 使用 |
---|---|---|
& 按位与
|
对应位都是1,结果为1,否则为0 |
a&b
|
| 按位或
|
对应位都是0,结果为0,否则为1 |
a|b
|
^ 按位非
|
对应位值相同,结果为0,否则为1 |
a^b
|
~ 按位取反
|
每一位变相反位,即0变成1,1变成0 |
~a
|
<< 按位左移
|
低位补0 |
a<<2
|
>> 按位右移
|
保留符号位,0为正,1为负 |
a>>2
|
>>> 按位或
|
高位补0 |
a>>>2
|
补充:
- 微机原理中,算数移动会保留符号位,逻辑移动不会保留符号位
- byte数组》整型:利用
byte
,&
,0xFF
,|
和<<
- 整型》byte数组:利用
value
,&
,0xFF
,强制装换(byte)
,和>>
端序
端序:字节序
- byte数据顺序与内存地址高低的关系
- 小端:将byte数组的低byte放在内存的低地址处
- 大端:将byte数组的低byte放在内存的高地址处
小端:一般都是小端
- 低字节在后,byte数组中序号小的在右边
大端:
- 高字节在后,byte数组中序号大的在右边
bytes》int
/*小端,低字节在后*/public static int bytesToIntLittleEndian(byte[] bytes) {// byte数组中序号小的在右边return bytes[0] & 0xFF | //(bytes[1] & 0xFF) << 8 | //(bytes[2] & 0xFF) << 16 | //(bytes[3] & 0xFF) << 24; //}/*大端,高字节在后*/public static int bytesToIntBigEndian(byte[] bytes) {// byte数组中序号大的在右边return bytes[3] & 0xFF | //(bytes[2] & 0xFF) << 8 | //(bytes[1] & 0xFF) << 16 | //(bytes[0] & 0xFF) << 24; //}
int》bytes
/*小端,低字节在后*/public static byte[] intToBytesLittleEndian(short intValue) {// byte数组中序号小的在右边// 右边的数据放到byte数组中序号小的位置byte[] bytes = new byte[Short.BYTES];bytes[0] = (byte) (intValue & 0xff);bytes[1] = (byte) ((intValue >> Byte.SIZE) & 0xff);bytes[2] = (byte) ((intValue >> Byte.SIZE * 2) & 0xff);bytes[3] = (byte) ((intValue >> Byte.SIZE * 3) & 0xff);return bytes;}/*大端,高字节在后*/public static byte[] intToBytesBigEndian(short intValue) {// byte数组中序号大的在右边// 右边的数据放到byte数组中序号大的位置byte[] bytes = new byte[Short.BYTES];bytes[3] = (byte) (intValue & 0xff);bytes[2] = (byte) ((intValue >> Byte.SIZE) & 0xff);bytes[1] = (byte) ((intValue >> Byte.SIZE * 2) & 0xff);bytes[0] = (byte) ((intValue >> Byte.SIZE * 3) & 0xff);return bytes;}
bytes》short
/*小端,低字节在后*/public static short bytesToShortLittleEndian(byte[] bytes) {// byte数组中序号小的在右边return (short) (bytes[0] & 0xFF | (bytes[1] & 0xFF) << 8);}/*大端,高字节在后*/public static short bytesToShortBigEndian(byte[] bytes) {// byte数组中序号大的在右边return (short) (bytes[1] & 0xFF | (bytes[0] & 0xFF) << 8);}
short》bytes
/*小端,低字节在后*/public static byte[] shortToBytesLittleEndian(short shortValue) {// byte数组中序号小的在右边// 右边的数据放到byte数组中序号小的位置byte[] bytes = new byte[Short.BYTES];bytes[0] = (byte) (shortValue & 0xff);bytes[1] = (byte) ((shortValue >> Byte.SIZE) & 0xff);return bytes;}/*大端,高字节在后*/public static byte[] shortToBytesBigEndian(short shortValue) {// byte数组中序号大的在右边// 右边的数据放到byte数组中序号大的位置byte[] bytes = new byte[Short.BYTES];bytes[1] = (byte) (shortValue & 0xff);bytes[0] = (byte) ((shortValue >> Byte.SIZE) & 0xff);return bytes;}
bytes》long
/*小端,低字节在后*/public static long bytesToLongLittleEndian(byte[] bytes) {// byte数组中序号小的在右边long values = 0;for (int i = (Long.BYTES - 1); i >= 0; i--) {values <<= Byte.SIZE;values |= (bytes[i] & 0xff);}return values;}/*大端,高字节在后*/public static long bytesToLongBigEndian(byte[] bytes) {// byte数组中序号大的在右边long values = 0;for (int i = 0; i < Long.BYTES; i++) {values <<= Byte.SIZE;values |= (bytes[i] & 0xff);}return values;}
long》bytes
/*小端,低字节在后*/public static byte[] longToBytesLittleEndian(long longValue) {// byte数组中序号小的在右边// 右边的数据放到byte数组中序号小的位置byte[] result = new byte[Long.BYTES];for (int i = 0; i < result.length; i++) {result[i] = (byte) (longValue & 0xFF);longValue >>= Byte.SIZE;}return result;}/*大端,高字节在后*/public static byte[] longToBytesBigEndian(long longValue) {// byte数组中序号大的在右边// 右边的数据放到byte数组中序号大的位置byte[] result = new byte[Long.BYTES];for (int i = (result.length - 1); i >= 0; i--) {result[i] = (byte) (longValue & 0xFF);longValue >>= Byte.SIZE;}return result;}
java byte数组与int之间相互转换相关推荐
- byte数组与字符串之间相互转换
byte数组与字符串之间相互转换 字符串转数组 数组转字符串 使用String类 利用16进制字符串 字符串转数组 public static void main(String[] args) {St ...
- java byte数组转int数组_Java任意长度byte数组转换为int数组的方法
前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...
- Java中byte[]数组和int之间的转换
在最近的项目中需要用到byte[]和int互转,找了一些资料选了其中感觉蛮不错的一种解决方法记录一下. 转自:http://blog.csdn.net/sunnyfans/article/detail ...
- byte[]数组和int之间的转换
这里简单记录下两种转换方式: 第一种: 1.int与byte[]之间的转换(类似的byte short,long型) [java] view plaincopy /** * 将int数值转换为占四个字 ...
- java byte数组与int,long,short,byte转换
1 public class DataTypeChangeHelper { 2 /** 3 * 将一个单字节的byte转换成32位的int 4 * 5 * @param b 6 * byte 7 * ...
- java byte数组转long_Java中byte、byte数组与int、long的转换详解
一.Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) ...
- java byte转成int数组_Java任意长度byte数组转换为int数组的方法
前言 嗯.最近工程上遇到一个byte数组转换为int的问题,解决过程中遇到了几个坑,经过各种查资料终于还是解决了.撒花. Java的位运算以及byte数组与其他类型数据的转换比c/c++感觉麻烦一些. ...
- java byte数组string_byte数组和String之间的转化
JAVA里面关于byte数组和String之间的转换问题 把byte转化成string,必须经过编码. 例如下面一个例子: import java.io.UnsupportedEncodingExce ...
- java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...
最新文章
- Pycharm + Anaconda 安装遇到的问题以及自己的理解
- 临江市领导参观视察域乎 —— 积极探索、稳妥布局“区块链+农业”
- linux交换空间使用率,linux编程系统中交换空间的使用情况
- java中为什么需要常量和变量的区别_Java中的变量和常量
- HandlerThread原理与应用
- 【收藏备用】服务器基本故障及排查方法
- 交换机的一些常见网络命令
- 【转载】基于Nios II的DMA传输总结(附源码)
- 用友 提示“尚有已全部暂估报销的单据未进行处理,不能进行12月的期末处理!”...
- [RabbitMQ]MQ 的选择
- linux 屏幕输出 高亮_通过printf设置Linux终端输出的颜色和显示方式
- 牛客网_Wannafly模拟赛1
- 数字图像处理第三版中文版部分答案-冈萨雷斯
- 雅虎Yahoo 前段优化 14条军规
- 梯度下降与一元线性回归
- matlab fft 基波,fft 谐波分析_matlab fft频谱分析_傅里叶变换谐波分析
- java读取mp3文件_java读取mp3文件 | 学步园
- 干货!CRM绩效考核指标(KPI)整理
- 语句摘抄——第19周
- vim全局搜索当前目录