
本文介绍在 java 中将蓝牙接收的十六进制字符串(如 "0e"、"15")安全、准确地转换为对应十进制整数值的实用方法,重点使用 `integer.parseint(string, 16)` 并涵盖大小写处理、异常防护与实际集成示例。
在实际开发中(例如通过蓝牙接收传感器数据),你常会收到以字节形式传输的十六进制值,如 byte[] data = {0x0e, 0x15}。你已通过 formatHexString() 将其转为 "0e15" 或 "0e 15" 等字符串格式;下一步需将其还原为可计算的十进制整数。Java 提供了简洁可靠的内置方案:Integer.parseInt(String s, int radix)。
✅ 核心方法:
String hexStr = "0e"; // 小写,也可为 "0E"、"15"、"FF" int decimal = Integer.parseInt(hexStr, 16); System.out.println(decimal); // 输出:14
⚠️ 关键注意事项:
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
- radix = 16 表示按十六进制解析,自动兼容大小写字母(a–f 和 A–F 均有效);
- 输入字符串不能含前缀(如 "0x0e" 或 "#15"),需先清理。若原始字符串带空格(如 "0e 15"),应先分割再逐个解析:
String formatted = "0e 15"; String[] hexParts = formatted.trim().split("\\s+"); for (String hex : hexParts) { if (!hex.isEmpty()) { try { int value = Integer.parseInt(hex, 16); System.out.println("Hex '" + hex + "' → Decimal: " + value); } catch (NumberFormatException e) { System.err.println("Invalid hex string: " + hex); } } } // 输出:Hex '0e' → Decimal: 14 // Hex '15' → Decimal: 21
? 与你现有代码无缝集成示例:
假设你从蓝牙接收到 byte[] data,希望直接获取每个字节对应的十进制值(而非拼接后的完整十六进制串):
public static int[] bytesToDecimals(byte[] data) {
if (data == null) return new int[0];
int[] decimals = new int[data.length];
for (int i = 0; i < data.length; i++) {
decimals[i] = data[i] & 0xFF; // 直接转为无符号十进制(0–255)
}
return decimals;
}
// 调用:bytesToDecimals(new byte[]{(byte)0x0e, (byte)0x15}) → [14, 21]? 总结:
立即学习“Java免费学习笔记(深入)”;
- 优先使用 Integer.parseInt(hexString, 16) 进行字符串→十进制转换,简洁高效;
- 对不可信输入务必包裹 try-catch 处理 NumberFormatException;
- 若原始数据是 byte[],且只需单字节十进制值(如传感器单字节读数),直接 & 0xFF 比先转 hex 再 parse 更高效;
- 避免手动实现十六进制查表逻辑(如你代码中的 DIGITS_LOWER),Java 标准库已充分优化且更可靠。









