Uint8Array.prototype.setFromHex()

Baseline 2025
Newly available

Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Phương thức setFromHex() của các instance Uint8Array điền vào đối tượng Uint8Array này các byte từ một chuỗi được mã hóa hex, trả về một đối tượng cho biết có bao nhiêu byte đã được đọc và ghi.

Phương thức này phân tích chuỗi thành một mảng byte. Để chuyển đổi chuỗi thành một số duy nhất, hãy dùng hàm parseInt() với radix16 thay thế.

Cú pháp

js
setFromHex(string)

Tham số

string

Một chuỗi thập lục phân mã hóa các byte cần ghi vào Uint8Array. Chuỗi phải:

  • Có số ký tự chẵn vì hai ký tự mã hóa một byte.
  • Chỉ chứa các ký tự trong bảng chữ cái thập lục phân, bao gồm 0–9 và A–F (không phân biệt hoa thường).
  • Không chứa khoảng trắng (khác với Uint8Array.prototype.setFromBase64()).

Lưu ý rằng chuỗi chỉ được đọc đến điểm mà mảng đã đầy, vì vậy bất kỳ cú pháp hex không hợp lệ nào sau điểm đó đều bị bỏ qua.

Giá trị trả về

Một đối tượng chứa các thuộc tính sau:

read

Số ký tự hex đã đọc từ chuỗi đầu vào. Nếu dữ liệu đã giải mã vừa với mảng, đây là độ dài của chuỗi đầu vào: ngược lại, đây là số ký tự hex hoàn chỉnh vừa với mảng.

written

Số byte đã ghi vào Uint8Array. Sẽ không bao giờ lớn hơn byteLength của Uint8Array này.

Ngoại lệ

SyntaxError

Ném ra nếu chuỗi đầu vào chứa các ký tự ngoài bảng chữ cái hex, hoặc độ dài của nó là số lẻ.

TypeError

Ném ra nếu chuỗi đầu vào không phải là chuỗi.

Ví dụ

Giải mã một chuỗi thập lục phân

Ví dụ này giải mã một chuỗi thập lục phân vào một Uint8Array đã có.

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]

Giải mã một chuỗi lớn vào một mảng nhỏ

Nếu chuỗi chứa nhiều dữ liệu hơn mảng có thể chứa, phương thức sẽ chỉ ghi số byte mà mảng có thể chứa.

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]

Các ký tự thừa bị bỏ qua, ngay cả khi chúng không hợp lệ. Tuy nhiên tổng độ dài của chuỗi đầu vào phải là số chẵn.

Đặt dữ liệu tại một offset cụ thể

Phương thức setFromHex() luôn bắt đầu ghi từ đầu Uint8Array. Nếu bạn muốn ghi vào giữa mảng, bạn có thể ghi vào một TypedArray.prototype.subarray() thay thế.

js
const uint8Array = new Uint8Array(8);
// Bắt đầu ghi tại 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]

Đặc tả

Specification
ECMAScript® 2027 Language Specification
# sec-uint8array.prototype.setfromhex

Tương thích trình duyệt

Xem thêm