Uint8Array.prototype.setFromHex()
Uint8Array 实例的 setFromHex() 方法使用十六进制编码字符串中的字节填充此 Uint8Array 对象,并返回一个指示读取和写入了多少字节的对象。
此方法会将字符串解析为字节数组。要将字符串转换为单个数字,请改用 radix 设置为 16 的 parseInt() 函数。
语法
js
setFromHex(string)
参数
string-
要写入
Uint8Array的字节的十六进制字符串编码。该字符串必须- 具有偶数个字符,因为两个字符编码一个字节。
- 仅包含十六进制字母表中的字符,其中包括 0-9 和 A-F(不区分大小写)。
- 不包含空格(与
Uint8Array.prototype.setFromBase64()不同)。
请注意,字符串仅读取到数组填满为止,因此此后任何无效的十六进制语法都将被忽略。
返回值
包含以下属性的对象:
read-
从输入字符串中读取的十六进制字符数。如果解码后的数据适合数组,则它等于输入字符串的长度;否则,它等于适合数组的完整十六进制字符数。
written-
写入
Uint8Array的字节数。永远不会大于此Uint8Array的byteLength。
异常
SyntaxError-
如果输入字符串包含十六进制字母表之外的字符,或者其长度为奇数,则会抛出此错误。
TypeError-
如果输入字符串不是字符串,则会抛出此错误。
示例
解码十六进制字符串
此示例将十六进制字符串解码到现有的 Uint8Array 中。
js
const uint8Array = new Uint8Array(8);
const result = uint8Array.setFromHex("cafed00d");
console.log(result); // { read: 8, written: 4 }
console.log(uint8Array); // Uint8Array(8) [202, 254, 208, 13, 0, 0, 0, 0]
将大字符串解码到小数组中
如果字符串包含的数据多于数组可容纳的数量,则该方法将只写入数组可容纳的字节数。
js
const uint8Array = new Uint8Array(4);
const result = uint8Array.setFromHex("cafed00d-some random stuff");
console.log(result); // { read: 8, written: 4 }
console.log(uint8Array); // Uint8Array(4) [202, 254, 208, 13]
多余的字符将被忽略,即使它们是无效的。但是,输入字符串的总长度必须是偶数。
在特定偏移量设置数据
setFromHex() 方法始终从 Uint8Array 的开头开始写入。如果要写入数组中间,则可以改用 TypedArray.prototype.subarray() 写入。
js
const uint8Array = new Uint8Array(8);
// Start writing at offset 2
const result = uint8Array.subarray(2).setFromHex("cafed00d");
console.log(result); // { read: 8, written: 4 }
console.log(uint8Array);
// Uint8Array(8) [0, 0, 202, 254, 208, 13, 0, 0]
规范
| 规范 |
|---|
| Uint8Array 与 base64 的相互转换 # sec-uint8array.prototype.setfromhex |
浏览器兼容性
加载中…