复习过程中,遇到的不太理解的地方

(byte)b & 0xff

byte to int


比较下面两个

    public static int byte2Int(byte b){return (int)b;}public static int byte2Int(byte b){return (int)(b & 0xff);}

疑问

你肯定在想这个与操作有什么影响吗?

是的,有影响 。以下是我的理解

& 0xff

0xff 的功能其实是补全32位int的
byte b = 11111111 ; // 脑袋里想的二进制表示 -1b & 0xff   结果是: 000...000(24个)11111111这样,得到的32位int值是用24个0补全的,所以我们得到的int值为 255

(int) b

没有与操作,我们可以考虑它是如何补全32位int的:若b表示负数,则用1补全位数,111111111...111(32个)
此为补码,补码求原码:符号为1,其余位取反加1.
还是 -1

所以,byte转int我们要理解是否考虑符号位。
强制类型转换较常用。

int 转 byte ,只需截取int的低8位即可

可以看到& 0xff 这一操作其实是保持了byte二进制的表示,这一特点我们后面会提到。


byte[] to int


如果说 byte 转 int 要考虑符号位,那么byte数组呢(4个byte转换1个int)

这时,我们要保持二进制的表示,什么意思呢

4个byte: -1 2 3 4
-1: 11111111
2 : 00000010
3 : 00000011
4 : 00000100得到的int值为该二进制表示拼接而成(方便理解)
11111111 00000010 00000011 00000100
值为多少,就要看高位低位了(大端小端)。

从这里可以看出,byte 拼接的过程中可以使用 & 0xff

// byte数组长度为4, bytes[3]为高8位
public static int bytes2Int(byte[] bytes){int value=0;value = ((bytes[3] & 0xff)<<24)|((bytes[2] & 0xff)<<16)|((bytes[1] & 0xff)<<8)|(bytes[0] & 0xff);return value;
}

int to byte[]


public static byte[] int2Bytes( int value )
{   byte[] src = new byte[4];  src[3] =  (byte) ((value>>24) & 0xFF);  src[2] =  (byte) ((value>>16) & 0xFF);  src[1] =  (byte) ((value>>8) & 0xFF);    src[0] =  (byte) (value & 0xFF);                  return src;
} 

byte 与 int 转换相关推荐

  1. java byte 和 int 转换

    一个byte占8位,一个int占32位. int 转byte时,需要&0xff,去掉前面的24位.因此当int是正数时,转出的byte可能是负数 byte转int时,需要&0xff,补 ...

  2. java编程int和byte的用法_Java中的Byte Array和Int转换

    Java中的Byte Array和Int转换 我有这两个函数有一些困难: byteArrayToInt和intToByteArray . 问题是,如果我使用另一个来得到另一个结果,结果是不同的,你可以 ...

  3. java byte转int 互相转换原理详解

    转自:https://blog.csdn.net/wojiuai2093/article/details/50779879 int i = 0;   i += ((b[0] & 0xff) & ...

  4. C++字节转换 (byte转int 互转)(BCD和HEX转换)

    2个字节short int 高低位转化: short int y=0x7f21; y = ( (y & 0xff00) >> 8) | ( (y & 0x00ff ) &l ...

  5. c# byte char string转换

    c# byte char string转换 在在做一些互操作的时候往往需要一些类型的相互转换,比如用c#访问 win32api的时候往往需要向api中传入DWORD参数 即:uint参数这些数值所表示 ...

  6. Java中String和byte[]间的转换浅析

    Java语言中字符串类型和字节数组类型相互之间的转换经常发生,网上的分析及代码也比较多,本文将分析总结常规的byte[]和String间的转换以及十六进制String和byte[]间相互转换的原理及实 ...

  7. java byte 转 c_C 和 Java 之间的byte数据的转换问题

    C语言里通常可能开发人员直接定义struct 作为数据包, 因此在java客户端接收struct 中的数据时候,受整数等类型的高低位存放的影响, 需要进行相应的转换, 参考: 转换代码如下: pack ...

  8. java byte[] 文件流 转换成string是乱码_Java学习--IO(二)、多线程

    1.标准输入流 标准输入流是指从标准输入设备流向程序的数据. Java利用http://System.in来得到一个InputStream字节输入流 public static void main(S ...

  9. String类以及String与基本数据类型/char[]/byte[]之间的转换

    String类: 1.String 声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的. 实现了Comparable接口:表示String可以 ...

最新文章

  1. 小白程序员仅用5分钟入职BAT,他只做了这件事!
  2. tomcat+bean例子
  3. 突然想起来,前天是感恩节。
  4. 用户画像-参考整理医疗app标签
  5. 猎豹产品经理:「全球化产品」应该要避开的几个坑
  6. 优秀!22岁读博士,26岁当教授,因为太优秀反而没人敢追?
  7. jquery实现上线翻滚效果公告
  8. JSP 页面 jstl 时间戳 long型转时间
  9. 多软件启动器 v1.0
  10. python今日内容_python笔记15
  11. 大数据之-Hadoop3.x_MapReduce_官方WordCount源码和序列化类型---大数据之hadoop3.x工作笔记0085
  12. 来,看我是如何把面试官问倒的!
  13. Tableau安装与破解
  14. ASO优化关键词覆盖、曝光原理
  15. GNOME 3 使用技巧
  16. win10家庭版不能保存关闭密码保护共享
  17. Task05|joyfulpandas|变形
  18. 初学EGE图形库(零)---从零开始CodeBlocks安装配置使用EGE图形库
  19. 用“掩码位图“,制作类似.png的“透明图片“①
  20. 重塑汽车产业价值链,ChinaJoy诚邀造车新势力加盟

热门文章

  1. zabbix安装监控客户端应用
  2. 把ChatGPT接入我的个人网站
  3. docker下载镜像timeout超时
  4. web前端开发常用浏览器介绍及运行配置
  5. 数据库之函数依赖、多值依赖
  6. 大数据学习——数据挖掘理论基础
  7. VUE.JS开源资料
  8. 什么是编程?程序员主要做啥工作?如何学习呢?
  9. 自卑的人,如何找到自信
  10. 二维空间中的一个向量场的散度