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

(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. Swift与Objective-C:与恐龙有关的趋势
  2. 解读自动驾驶的2020:从硬件角度看,无人车商业化落地难在哪?
  3. 重装windows installer
  4. python字符串替换空格_python - 用pandas中的NaN替换空白值(空格)
  5. 开源客户关系管理系统vTigerCRM 5.2正式版发布
  6. 2019牛客暑期多校训练营(第七场)A String(暴力)
  7. 如何快速接手一个系统?
  8. java中泛型上限,下限应用
  9. 方案改进:直接通过User Control生成HTML
  10. set java底层实现_Java:List,Map,Set底层实现
  11. 在线民宿满意度测评项目[开源]
  12. Photoshop 入门教程「4」如何使用撤消命令?
  13. 《剑指offer》66道算法题合集(java实现)
  14. xmapp 终端数据库问题记录 已解决
  15. 点到线段的距离 计算几何
  16. 电脑水冷,论电脑到底有没有必要装水冷
  17. 读博与怠工(在北航硕博连读)——转载
  18. 为什么说python是最好的语言!学校_为什么说python语言是最好的选择?老男孩教育...
  19. 为什么说 5G 是物联网的时代?
  20. 主流视频编码压缩技术基本概念(二) 算法分析

热门文章

  1. 城市道路工程设计技术措施
  2. 【SSH】订单编号类型引发的小问题
  3. Kaggle实战(一)生死还难预测37
  4. 如果他们在未来的几年内技术水平没有突破性的提升,或者缺乏一点灵性和品味,那么可能在未来很长一段时间内,他们都会保持这个薪资水平(转)...
  5. chatgpt4开放申请啦
  6. 怎么强制弹出窗口永远在最前面(转)
  7. 模仿大脑是AI的好方向吗
  8. 蓝旭工作室2023春季培训预习博客(三)
  9. 操作系统实验:读者写者问题
  10. taro更新页面数据_Taro 版本升级权威指南