java byte[]转int和double

article/2025/8/21 11:35:49

一般无需java来处理byte字节的数据转成 int , C语言更适合干这事. 但是无奈遇到了这种需求.
网上百度了一小部分代码, 发现好多错误代码… 干脆自己手写了一遍…
byte[]数据的格式协议文档如下:
在这里插入图片描述

先上使用代码

byte[] hex = Base64.getDecoder().decode(data);
int head = Read3Bytes(hex, 0) ;// 3个字节  1b7273if(head !=  1798771) // 十进制 1798771 ==== 16进制 0x1b7273{throw new Exception("不可识别的数据包");}
// 数据长度是  
int datalength =  Read1Bytes(hex, 3); //1字节 此数据后面所带的有效数据长度
// 命令字
int cmd = Read1Bytes(hex, 4); ; // 命令字 0:服务器通过get获取  1:开门   2:关门
//温度
int wendu = Read3Bytes(hex, 5) ;// 3个字节  0x01+2字节温度数据 
//湿度
int shidu = Read2Bytes(hex, 8);// 2个字节  2字节湿度数据
//距离:            0x02+2字节距离数据
int juli =   Read3Bytes(hex, 10);

java中数字是依照补码的形式存储的.
正数的补码是不变的.
负数的补码表示为 原码 取反 之后再加1

以-127为例:①127的原码:0111 1111②127的反码:1000 0000③127的反码加1:1000 0001 ④答案就出来了 :-127的补码就是,1000 0001

原文链接:https://blog.csdn.net/moshiyaofei/article/details/88353435

下面是主要代码, 此代码适合高位在前,低位在后的byte顺序, 如需反着的可以试着自己修改代码.
另外此代码对负数没有处理. 后面抽空补上.

//循环累加、或运算都可以public static int Read1Bytes(byte[] bytes,int startindex){return  bytes[startindex]  ;  }public static int Read2Bytes(byte[] bytes,int startindex){return   bytes[startindex] << 8 | (bytes[startindex + 1] << 0)  ; }public static int Read3Bytes(byte[] bytes,int startindex){return   bytes[startindex] << 16 | (bytes[startindex + 1] <<8) | (bytes[startindex + 2] <<0); }public static int Read4Bytes(byte[] bytes,int startindex){return   bytes[startindex] << 24 | (bytes[startindex + 1] << 16) | (bytes[startindex + 2] << 8)| (bytes[startindex + 3] << 0); }public static double Read5Bytes(byte[] bytes,int startindex){return    bytes[startindex] << 32 | (bytes[startindex + 1] << 24) | (bytes[startindex + 2] << 16)| (bytes[startindex + 3] << 8) | (bytes[startindex + 4] << 0); }public static double Read6Bytes(byte[] bytes,int startindex){return    bytes[startindex] << 40 | (bytes[startindex + 1] << 32) | (bytes[startindex + 2] << 24)| (bytes[startindex + 3] << 16) | (bytes[startindex + 4] << 8)| (bytes[startindex + 5] << 0); }public static double Read7Bytes(byte[] bytes,int startindex){return   bytes[startindex]  << 48| (bytes[startindex + 1] << 40) | (bytes[startindex + 2] << 32) | (bytes[startindex + 3] << 24)| (bytes[startindex + 4] << 16) | (bytes[startindex + 5] << 8)| (bytes[startindex + 6] << 0); }public static double Read8Bytes(byte[] bytes,int startindex){return    bytes[startindex] << 56 | (bytes[startindex + 1] << 48) | (bytes[startindex + 2] << 40) | (bytes[startindex + 3] << 32) | (bytes[startindex + 4] << 24)| (bytes[startindex + 5] << 16) | (bytes[startindex + 6] << 8)| (bytes[startindex + 7] << 0); }

http://chatgpt.dhexx.cn/article/h1hGFHcT.shtml

相关文章

详细讲解int、float与double的区别

最近为了看一下float的精确度仔细看了一下这三种数据在内存中的样子&#xff0c;看了一下别人的博客发现大家对精度都有这不同的定义&#xff0c;我自己也简单画了一下。 下面来主要讲解一下int、float与double三者的区别与详解 一、int&#xff08;最简单的一种&#xff09;…

c++ string转int, double,int,double转string

c string与常用数值变量互转 写了几个字符串与数值变量互相转换的几个函数&#xff0c;每次用到都要上网查一堆&#xff0c;耽误时间&#xff0c;写好放到这里备用。方法有很多&#xff0c;这里列出来测试过能用的&#xff0c;其他方法慢慢添加。以下函数自动判断int或者double…

C++下string类型转double类型

最近coding的时候随手写了std::stod()函数来进行类型的转换&#xff0c;发现输出的时候自动做了小数位的截取 尝试使用std::stold()函数转换成long double类型之后&#xff0c;依旧不能解决问题&#xff0c;输出依旧不是想要的 发现网上对这个问题的解答没有&#xff0c;于是…

double类型转换成int类型

1、案例演示 public class test09 {public static void main(String[] args) {double a 5000.44;double b 100.12;double v a / b;int i new Double(v).intValue();System.out.println(i);System.out.println(v);} } 运行结果&#xff1a; 49 49.944466640031955 2、源…

移动光猫超级管理员密码获取

我的型号是ZN-M142G 一 、开启telnet 1.电脑开启telnet &#xff08;自行百度&#xff09; 2.登录192.168.1.1 3.把路由器后台网址替换&#xff08;如果光猫已经开启telnet请忽略&#xff09;​​​​​​http://192.168.1.1/getpage.gch?pid1002&nextpagetele_sec_ts…

移动光猫只有一个lan口?其他是电视用,如何增lan口

输入192.168.1.1&#xff0c;用超级账号登陆&#xff0c;&#xff08;如何得到超级账号呢&#xff0c;可以让维护小区的移动工作人员给你&#xff09;我发现家里的光猫只有一个lan口&#xff0c;通过超级账号登陆发现&#xff0c;其他三个&#xff08;lan1~lan3&#xff09;都分…

移动光猫 烽火HG6145F 获取管理员密码 启用USB存储功能

总结一下移动光猫烽火HG6145F获取管理员密码的过程&#xff0c;从网上没有搜到这个型号&#xff0c;但是可以参考一下相关类似型号&#xff0c;参考链接附后。 1、连接光猫&#xff1a;首先连接好光猫的WIFI&#xff0c;确认可以访问路由默认网关192.168.1.1 2、获取光猫MAC&…

移动光猫连接移动硬盘变成超小型nas【HS8545M5

移动硬盘连接光猫usb接口 一.第一步 先准备好移动硬盘和光猫 我的移动硬盘装了个盒子1TB 连接好usb接口 我家的光猫是华为定制版的 HS8545M5 当然肯定不会这么简单的就完成了 2.这个需要登录光猫的超级管理员打开媒体共享功能的 当然移动公司不会简单给你超级账号的密码 可以…

最新中国移动光猫改桥接方式(中兴ZXHN F663NV9)地域:贵州 适用于动态超密

​ 话不多说&#xff0c;直接开干 1.首先拔掉光纤 2.把电脑网线插进光猫1口 输入管理地址192.168.1.1 ​ 3.接着输入管理员密码&#xff0c;就是光猫背面的那个 进入后台后选择 网络——远程管理 然后复制loid和password以及sn备用 4.然后重置光猫 用针恢复孔5秒以上&…

移动光猫(吉比特TEWA-272G)进入高级管理界面的简单方法

参加中国移动光纤宽带升级千兆活动后&#xff0c;之前通过超级用户身份已调成桥接模式的光猫(GS3101)免费更换成了吉比特TEWA-272G(2021-10-30生产&#xff0c;硬件版本号HV1.0.0.0、软件版本号 V1.0.0.0)&#xff0c;只能用新设备后面注明的user和口令进入基础管理界面进行…

移动光猫GM219-s多LAN端口的网络开放

起因 最近&#xff08;2018.08&#xff09;装了移动的50M宽带&#xff08;成都&#xff09;&#xff0c;在默认情况下GM219-S这款光猫总共有4个端口&#xff0c;但是只有LAN1口是可以连接电脑上网&#xff0c;其他的3个端口只能用于电视盒子之类的用途。就是下图这货→_→   …

移动光猫之桥接教程

背景&#xff1a;移动宽带默认是移动光猫拨号&#xff0c;使用的路由模式&#xff0c;但移动的猫太差劲&#xff0c;需要将移动光猫改为桥接模式&#xff0c;改用红米AC2100路由器进行拨号上网。说干就干&#xff0c;开工。 1、获取光猫超级用户和密码。 用户名&#xff1a;C…

网速更稳定,破解移动光猫GM219-S的超级账号及密码,光猫改桥接

前言 我家的宽带是河南的大内网移动500m快带&#xff0c;光猫性能太拉了&#xff0c;时不时就装死&#xff0c;并且网上的大多数教程都没法用&#xff0c;大部分漏洞的接口都堵上了。本来都打算找移动客服扯皮去&#xff0c;突然找到了一个教程拯救了我。 教程地址 教程&…

获取移动光猫(如HS8545M5等设备)pppoe密码明文

有时候忘记了自己的pppoe拨号密码&#xff0c;找回又很麻烦&#xff0c;这里教大家怎么把光猫的pppoe密码明文搞出来 首先使用超级账户登录到你的光猫 超级账户的密码一般是与光猫型号对应&#xff0c;是固定的&#xff0c;上网就型号能搜到&#xff08;或者与地区相关联&…

获取中国移动光猫H2-2超管密码

最近闲的难受开始闲置利用&#xff0c;将两年前买的我家云和没用的硬盘闲置利用&#xff0c;上网心云&#xff0c;无奈由于中国移动路由器限制&#xff0c;每天收益几分钱&#xff0c;最多1毛1&#xff0c;只能解密家里中国移动光猫开启UPNP了。 家里宽带为&#xff1a;中国移动…

中国移动光猫获取超级密码教程

关键词&#xff1a;中国移动光猫、华为光猫 相关工具&#xff1a; HuaWeiONT_v2.0.7z 下载地址&#xff1a;http://res.extapps.com/pcsoft/HuaWeiONT_v2.0.7zhttp://res.extapps.com/pcsoft/HuaWeiONT_v2.0.7z 华为解密.zip 下载地址&#xff1a;下载 | 华为光猫配置解密工…

陕西移动宽带光猫 GM219-S 路由功能分离

陕西移动宽带光猫 GM219-S 路由功能分离 最近更换了陕西移动的100M宽带。移动公司送的光猫型号为GM219-S&#xff0c;自带路由和无线功能。以下为光猫外形。 装机师傅在调测好宽带后拒绝透露光猫的超级管理员用户名密码&#xff0c;且将光猫设置为猫路由模式。这样我自用的…

重庆地区移动宽带更换光猫

重庆地区移动宽带更换光猫注意事项 为什么要安装移动宽带 我原本是用的电信纯宽带&#xff0c;资费699一年&#xff0c;速率下行100M&#xff0c;上行20M&#xff0c;免安装费用&#xff0c;运营商提供免费提供光猫。原宽带于3月到期&#xff0c;我也觉得资费有点贵&#xff…

修改移动光猫,提升上网速度

家里网络变慢的问题 自从换了移动的100M网络&#xff08;因为免费才换的&#xff01;&#xff01;&#xff09;&#xff0c;发现家里的网络差了好多。一开始还好&#xff0c;到了后面总是出现页面卡顿&#xff0c;网页上不去现象。 经过一番盲猜分析&#xff0c;发现了两个问…

中国移动光猫 GM220-S 改桥接简易教程(安徽移动)

写在前面 光猫&#xff08;modem&#xff09;本来就是擅长于光线信号的调制解调&#xff0c;并不一定适合路由&#xff08;拨号/wifi什么的&#xff09;&#xff0c;虽说现在光猫的性能都还过得去&#xff0c;但本人本着折腾的心态还是想让路由器来担当拨号&路由的重任&…