鸿蒙三方库 | harmony-utils之EncryptUtil Hex编解码详解
·
前言
Hex(十六进制)编码将二进制数据转换为十六进制字符串,常用于加密结果展示、数据调试等场景。@pura/harmony-utils 的 EncryptUtil 封装了Hex编解码方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、Hex编解码核心API
EncryptUtil 提供了以下Hex编解码方法:
| 方法 | 说明 | 返回类型 | 使用场景 |
|---|---|---|---|
encodeHex(data) |
编码为Hex字符串 | string | 数据展示 |
decodeHex(hex) |
从Hex字符串解码 | Uint8Array | 数据还原 |
1.1 核心特性
- 简洁易用:封装复杂逻辑为一行调用,降低使用门槛
- 类型安全:完整的TypeScript类型定义,编译期即可发现错误
- 异常处理:内置异常捕获机制,避免运行时崩溃
- 双向转换:支持二进制数据与Hex字符串互转
1.2 Hex编码对照
| 原始数据 | Hex编码 | 说明 |
|---|---|---|
| Hello | 48656C6C6F | ASCII文本 |
| 0x01 0xFF | 01FF | 二进制数据 |
| [0, 255] | 00FF | 字节数组 |
二、完整使用步骤
2.1 安装依赖
ohpm install @pura/harmony-utils
2.2 Hex编码
import { EncryptUtil } from '@pura/harmony-utils';
Button('Hex编码')
.width('100%')
.onClick(() => {
try {
let data = new Uint8Array([0x48, 0x65, 0x6C, 0x6C, 0x6F]);
let hex = EncryptUtil.encodeHex(data);
this.result = `数据: Hello\nHex: ${hex}`;
} catch (e) {
this.result = '异常: ' + e;
}
})
2.3 Hex解码
Button('Hex解码')
.width('100%')
.onClick(() => {
try {
let hex = '48656C6C6F';
let data = EncryptUtil.decodeHex(hex);
let text = String.fromCharCode(...data);
this.result = `Hex: ${hex}\n解码: ${text}`;
} catch (e) {
this.result = '异常: ' + e;
}
})

三、完整页面示例
import { EncryptUtil } from '@pura/harmony-utils';
@Entry
@Component
struct HexDemo {
@State result: string = '';
build() {
Column({ space: 12 }) {
Button('Hex编码').width('100%').onClick(() => {
let data = new Uint8Array([0x48, 0x65, 0x6C, 0x6C, 0x6F]);
this.result = EncryptUtil.encodeHex(data);
});
Button('Hex解码').width('100%').onClick(() => {
let data = EncryptUtil.decodeHex('48656C6C6F');
this.result = String.fromCharCode(...data);
});
Text(this.result).fontSize(14).fontColor('#333333')
}
.padding(16)
}
}
四、进阶用法
4.1 加密结果展示
import { EncryptUtil } from '@pura/harmony-utils';
async function showHashResult(input: string): Promise<string> {
let hash = await EncryptUtil.sha256(input);
return EncryptUtil.encodeHex(hash);
}
4.2 数据调试
function debugBinaryData(data: Uint8Array): string {
return EncryptUtil.encodeHex(data);
}
五、注意事项
- 大小写:Hex编码通常输出小写字母
- 长度倍增:每个字节编码为2个Hex字符
- 奇数长度:解码时奇数长度Hex字符串可能报错
- 初始化依赖:使用前需确保
AppUtil.init()已调用 - 非Hex字符:解码时包含非Hex字符会报错
六、常见问题
Q1: Hex编码输出大写还是小写?
通常输出小写,如需大写可使用toUpperCase()转换。
Q2: 解码时Hex字符串长度必须是偶数吗?
是的,每个字节对应2个Hex字符,奇数长度无法正确解码。
Q3: Hex编码是加密吗?
不是,Hex只是编码方式,任何人都可以解码。
Q4: 如何将字符串转为Hex?
先将字符串转为Uint8Array,再调用encodeHex。


总结
EncryptUtil 的Hex编解码方法为二进制数据展示提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法展示加密结果、调试二进制数据。
本文基于
@pura/harmony-utils工具库,更多功能请参考官方文档与后续系列文章。
更多推荐




所有评论(0)