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 字符串是十六进制字符串。
  • 可以根据实际情况对代码进行调整,例如添加对不同类型字符串的处理。
JavaScript 字符串与字节数组相互转换方法

原文地址: https://www.cveoy.top/t/topic/qkss 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录