当前位置: 首页 > news >正文

【Java】readUnsignedShort()与readShort()

readUnsignedShort()与readShort()区别

主要区别在于他们处理读取的两个字节的方式以及返回值类型和范围

1. 返回值类型
readUnsignedShort()
  1. 返回值是int类型
  2. 他将两个字节组合成一个无符号的16位整数,返回值范围是065535(即2^16 - 1)
readShort()
  1. 返回值是short类型
  2. 他将两个字节组合成一个有符号的16位整数,返回值为-3276832767(即-2^152^15 -1
2. 数据解释方式
readUnsignedShort()
  1. 将两个字节视为无符号的数据
  2. 高字节(第一个字节)左移8位,低字节(第二个字节)直接相加
    return (ch1 << 8) + (ch2 << 0);
    
  3. 结果是一个非负的(int类型),范围从065535
readShort()
  1. 将两个字节视为有符号数据
  2. 同样的通过右移8位、地位字节直接相加,但最终的会被强制转换为short类型
    return (short) ((ch1 << 8) + (ch2 << 0));
    

实例对比

假设我们从流中读取两个字节,0xFF0x7F
readUnsignedShort()计算过程如下,返回值为65407(无符号)

ch1 = 0xFF (255), ch2 = 0x7F (127)
result = (ch1 << 8) + (ch2 << 0)
       = (255 << 8) + (127 << 0)
       = 65280 + 127
       = 65407

readShort() 计算过程如下

ch1 = 0xFF (255), ch2 = 0x7F (127)
result = (short) ((ch1 << 8) + (ch2 << 0))
       = (short) (65280 + 127)
       = (short) 65407

由于short是有符号类型,65407超过了short的正数范围,会被解释为负数:

result = -129
特性readUnsignedShort()readShort()
返回值类型intshort
数据范围0到65535-32768 到 32767
符号处理无符号(不会出现负数)有符号(可能出现负数)
适用场景解析非负数解析可能出现负数的数据

相关文章:

  • VS Code连接远程服务遇到的问题
  • 神奇的闹钟(算法题)
  • 蓝桥备赛(27)算法篇【二分算法】
  • 【赵渝强老师】达梦数据库的线程结构
  • 若依——基于AI+若依框架的实战项目(原理篇)
  • 23种设计模式-装饰器(Decorator)设计模式
  • C++类与对象-3.23笔记
  • 【Java】Springboot集成itextpdf制作pdf(内附pdf添加表格、背景图、水印,条形码、二维码,页码等功能)
  • 牛客春招刷题训练营 3月25日 Java 查找两个字符串a,b中的最长公共子串 构造C的歪
  • 基于docker-compose 部署可道云资源管理器
  • 系留无人机照明芯片迎来革新:80V耐压输入+FP7195千瓦级大功率调光IC方案落地
  • GitLab 中文版17.10正式发布,27项重点功能解读【三】
  • html方法收集
  • Java 集合操作详解与使用指南
  • UE4学习笔记 FPS游戏制作14 发射抛物线子弹
  • 多维动态规划 力扣hot100热门面试算法题 面试基础 核心思路 背题
  • 第四届能源、电力与电气国际学术会议(ICEPET 2025)
  • 后缀表达式 | 第十届蓝桥杯省赛C++B组
  • 如何使用Xshell连接Linux虚拟机
  • K8S学习之基础五十:k8s中pod时区问题并通过kibana查看日志
  • 香港油麻地旧警署将向游客开放
  • 第1现场|俄媒称乌克兰网上出售北约对乌军培训手册
  • 马上评|房屋“注胶堵漏”骗局何以屡屡得逞
  • 日月谭天 | 赖清德倒行逆施“三宗罪”,让岛内民众怒不可遏
  • 广东进入“倒水模式”,珠江防总、珠江委已启动Ⅳ级应急响应
  • 倒计时1天:走进“中国荔乡”茂名,探寻农交文旅商融合发展新模式