如何将二进制/十六进制转换为字符串?具体转换实现方法问询
十六进制转UTF-8文本的具体实现步骤
你的这段十六进制数据全部属于单字节UTF-8字符(所有字节值都在0x00-0x7F范围内),转换逻辑非常直接,具体步骤如下:
1. 预处理十六进制字符串
先去掉十六进制前缀0x,得到纯十六进制字符序列:22302e3130332e3020286537373133386520323032322d30342d31312920346436393665363536343432373935363639363134323534343322
2. 按两位一组拆分字节
UTF-8单字节字符对应两位十六进制数,把上面的序列每两位拆分成一组,每组代表一个字节:22, 30, 2e, 31, 30, 33, 2e, 30, 20, 28, 65, 37, 37, 31, 33, 38, 65, 20, 32, 30, 32, 32, 2d, 30, 34, 2d, 31, 31, 29, 20, 34, 64, 36, 39, 36, 65, 36, 35, 36, 34, 34, 32, 37, 39, 35, 36, 36, 39, 36, 31, 34, 32, 35, 34, 34, 33, 22
3. 每组十六进制转对应字符
把每组十六进制值转换成十进制,再映射到对应的ASCII/UTF-8字符(单字节UTF-8与ASCII完全兼容):
22→ 34 → 双引号"30→ 48 → 字符02e→ 46 → 点.31→ 49 → 字符1- 以此类推,将所有组转换后拼接,就得到最终的UTF-8文本:
"0.103.0 (e77138e 2022-04-11) 4d696e65644279566961425443"
快速验证方法
如果手动转换麻烦,可借助命令行工具快速验证,比如在Linux/macOS下用xxd命令:
echo -n "22302e3130332e3020286537373133386520323032322d30342d31312920346436393665363536343432373935363639363134323534343322" | xxd -r -p
执行后会直接输出转换后的UTF-8文本。
内容的提问来源于stack exchange,提问作者Siwei
相关产品推荐
相关产品推荐

