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

【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
符号处理无符号(不会出现负数)有符号(可能出现负数)
适用场景解析非负数解析可能出现负数的数据

http://www.kler.cn/a/600558.html

相关文章:

  • 基于springboot的地方美食分享网站(全套)
  • 《自动化开发之路:使用 Jenkins、GitLab CI 与 GitHub Actions 构建高效 CI/CD 流水线》
  • Oracle-rman restore遭遇RMAN-03002与ORA-19563
  • java基础自用笔记:异常、泛型、集合框架(List、Set、Map)、Stream流
  • protobuf为什么快
  • ESP-SPARKBOT AI 智能机器人:v1.2 全流程复刻指南
  • 网络基础-路由器和交换机工作配置
  • 【测试报告】论坛系统
  • 新书速览|OpenCV计算机视觉开发实践:基于Python
  • 跨境选品利器:基于速卖通API实时监控爆款商品价格与库存波动
  • 3.25-2request库
  • MATLAB 2024b深度学习,图神经网络(GNN)
  • 正弦函数的连续傅里叶变换正弦序列的DTFT
  • HarmonyOS 之 @Require 装饰器自学指南
  • DeepSeek-V3-0324 模型发布:开源 AI 性能再攀高峰,推理与编码能力逼近顶级闭源模型
  • python康复日记-request库的使用,爬虫自动化测试
  • ToolsSet之:快捷键和速查表
  • VS Code连接远程服务遇到的问题
  • 蓝之洋科技以AI智能制造引领变革,推动移动电源产业迈向高端智能化!
  • 三分钟读懂微服务