JavaScript 字符串与字节数组相互转换方法
JavaScript 字符串与字节数组相互转换方法
本文介绍了 JavaScript 中将字符串 deviceId 转换为字节数组,以及将字节数组转换为 deviceId 字符串的方法。这些方法提供了在不同数据格式之间进行转换的实用工具。
将字符串 deviceId 转换为字节数组
function deviceIdToArray(deviceId: string, length: number = 16): Array<number> {
// 非法参数直接返回null
if (!deviceId) {
return null;
}
// 去除左右可能的空白字符
deviceId = deviceId.trim();
// 如果待转换的设备地址超过指定位数则报错
if (deviceId.length > length) {
throw new Error('待转换的设备地址不能超过' + length + '位');
}
// 如果待转换的设备地址不是指定位数,则在前面补0
if (deviceId.length < length) {
let len = length - deviceId.length;
for (let i = 0; i < len; i++) {
deviceId = '0' + deviceId;
}
}
// 转换为字节数组ArrayBuffer格式
let buffer = stringUtils.hex2buffer(deviceId);
let uint8Array: Uint8Array = new Uint8Array(buffer);
let results: Array<number> = [];
uint8Array.forEach((value) => results.push(value));
return results;
}
将字节数组转换为 deviceId 字符串
function arrayToDeviceId(array: Array<number>): string {
// 非法参数直接返回null
if (!array || array.length === 0) {
return null;
}
// 转换为Uint8Array格式
let uint8Array = new Uint8Array(array);
// 将Uint8Array转换为十六进制字符串
let hexString = Array.prototype.map.call(uint8Array, (byte) => {
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
}).join('');
// 去除左右可能的空白字符
hexString = hexString.trim();
// 返回deviceId字符串
return hexString;
}
注意:
- 以上代码使用了
stringUtils.hex2buffer方法来将十六进制字符串转换为 ArrayBuffer 格式。该方法需要根据实际情况进行修改。 - 该代码假设 deviceId 字符串是十六进制字符串。
- 可以根据实际情况对代码进行调整,例如添加对不同类型字符串的处理。
原文地址: https://www.cveoy.top/t/topic/qkss 著作权归作者所有。请勿转载和采集!