javascript Uint8Array对象与hexString和数组对象之间的相互转换

本文介绍了在处理Uint8Array对象时遇到的问题,即JSON.stringify()序列化后导致的冗长字符串和无法反序列化回Uint8Array。为了解决这个问题,文章详细阐述了如何在JavaScript中将Uint8Array对象转换为16进制字符串以及普通数组,以及这些转换在序列化和反序列化过程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这样一个场景下: 如果一个对象总包含了一个Uint8Array对象,如果执行了JSON.stringify()序列化对象之后,Uint8Array对象被转换成了下标映射到值的一个字典,这样导致的第一个问题是序列化之后的字符串会很长,第二个问题是无法通过JSON.parse()反序列化为原来的Uint8Array对象。那么此时将Uint8Array转换为普通数组对象和字符串对象,就能很便于做序列化与反序列化处理。



Uint8Array对象与16进制字符串的相互转换

const fromHexString = hexString =>
  new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));

const toHexString = bytes =>
  bytes.reduce((str, byte) => str + byte.toString(16).padStart(2, '0'), '');

console.log(toHexString(new Uint8Array([0, 1, 2, 42, 100, 101, 102, 255])))
console.log(fromHexString('0001022a646566ff'))

输出:

> "0001022a646566ff"
> Uint8Array [0, 1, 2, 42, 100, 101, 102, 255]



Uint8Array与数组对象的相互转换

var uintAry = new Uint8Array([0, 1, 2, 42, 100, 101, 102, 255]);
console.log(uintAry);
console.log(JSON.stringify(uintAry)); console.log();


var aryObj = Array.from(uintAry);
console.log(aryObj);
console.log(JSON.stringify(aryObj)); console.log();

var ary = [7,5,6,3,7,3];
var uintAryFromAry = new Uint8Array(ary);
console.log(uintAryFromAry);
console.log(JSON.stringify(uintAry)); console.log();

输出:

> Uint8Array [0, 1, 2, 42, 100, 101, 102, 255]
> "{"0":0,"1":1,"2":2,"3":42,"4":100,"5":101,"6":102,"7":255}"
> 
> Array [0, 1, 2, 42, 100, 101, 102, 255]
> "[0,1,2,42,100,101,102,255]"
> 
> Uint8Array [7, 5, 6, 3, 7, 3]
> "{"0":0,"1":1,"2":2,"3":42,"4":100,"5":101,"6":102,"7":255}"
> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值