怎么通过 Long.parseLong() 配合指定基数解析来自硬件传感器的十六进制原始变量值

落杰酱_9486

落杰酱_9486

2026-05-10

236人浏览

原创

long.parselong(string, 16)仅接受纯小写十六进制字符串(如"fffe"),需预处理去除"0x"前缀、转小写、清除空白;解析后若为补码负值,须手动符号扩展;务必try-catch异常。

怎么通过 long.parselong() 配合指定基数解析来自硬件传感器的十六进制原始变量值

直接用 Long.parseLong(String, int) 解析传感器返回的十六进制字符串时,必须确保输入格式合法——它**不接受 "0x" 前缀、不接受大小写混用的字母(如 "aF")、也不处理补码负值**。硬件传感器常以纯十六进制字符串(如 "fffe")或带前缀的字节流形式输出原始值,需按实际场景预处理后再解析。

确认传感器输出的真实格式

先抓取原始响应,观察是否含前缀、空格、换行或分隔符:

  • 若返回 "0xfffe" 或 "0XAB12":需去掉 "0x" 或 "0X" 前缀,再转小写(Long.parseLong() 只认 a–f,不认 A–F)
  • 若返回 "ff fe ab 12"(空格分隔):先 replaceAll("\s+", "") 清除所有空白
  • 若返回字节数组(如 byte[]{(byte)0xFF, (byte)0xFE}):不能直接传给 parseLong,需先转为十六进制字符串(推荐用 String.format("%02x", b) 拼接)

正确调用 parseLong() 并指定基数 16

只传纯十六进制字符(0–9, a–f),基数写 16:

String raw = "fffe"; // 传感器原始值,无前缀、小写
long value = Long.parseLong(raw, 16); // → 65534

若原始为大写,务必先转小写:

String raw = "FFFE";
long value = Long.parseLong(raw.toLowerCase(), 16); // ✅

错误示例(会抛 NumberFormatException):

Long.parseLong("0xfffe", 16); // ❌ 含 "0x"
Long.parseLong("FFFE", 16);    // ❌ 大写字母(JDK 8+ 允许,但旧版本不保证)

处理有符号十六进制值(如传感器用补码表示负温度)

Long.parseLong() 总是按无符号解析。若传感器用 16 位补码输出(如 "fffe" 表示 -2),需手动转为有符号值:

  • 确定原始位宽(常见:8/16/32 位)
  • 解析后,用位运算截断并扩展符号位。例如 16 位补码:
String hex = "fffe";           // 传感器原始值
long uval = Long.parseLong(hex, 16); // 无符号值:65534
long sval = uval & 0xFFFF;     // 保留低 16 位
if ((sval & 0x8000) != 0) {    // 最高位为 1 → 负数
    sval = sval | 0xFFFFFFFFFFFF0000L; // 符号扩展到 long
}
// sval 现在是 -2

健壮性建议:加异常捕获与日志

传感器通信可能出错,返回非十六进制内容(如超时乱码 "ERR" 或空字符串),务必包裹 try-catch:

try {
    String cleanHex = sensorRaw.trim().toLowerCase().replace("0x", "");
    long parsed = Long.parseLong(cleanHex, 16);
    // 后续处理...
} catch (NumberFormatException e) {
    Log.e("Sensor", "Invalid hex: '" + sensorRaw + "'", e);
    // 返回默认值或触发重试
}
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

11197

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

8302

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

7172

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

1204

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

968

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1436

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2949

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

20211

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

1295

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.9万人学习