JavaScript 数组与字符串相互转换:将 deviceId 转换为字节数组,反之亦然
JavaScript 数组与字符串相互转换:将 deviceId 转换为字节数组,反之亦然/n/n在 JavaScript 开发中,有时需要将字符串类型的 deviceId 转换为字节数组 (ArrayBuffer) 格式,或者反过来将字节数组转换为字符串。本文将详细介绍两种常用的转换方法,并提供代码示例和优化建议,帮助开发者高效完成数据类型转换。/n/n### 1. 将 deviceId 字符串转换为字节数组 (ArrayBuffer)/n/njavascript/nfunction deviceIdToArray(deviceId: string, length: number = 16): Array<number> {/n // 非法参数直接返回 null/n if (!deviceId) {/n return null;/n }/n // 去除左右可能的空白字符/n deviceId = deviceId.trim();/n // 如果待转换的设备地址超过指定位数则报错/n if (deviceId.length > length) {/n throw new Error('待转换的设备地址不能超过' + length + '位');/n }/n // 如果待转换的设备地址不是指定位数,则在前面补 0/n if (deviceId.length < length) {/n let len = length - deviceId.length;/n for (let i = 0; i < len; i++) {/n deviceId = '0' + deviceId;/n }/n }/n // 转换为字节数组 ArrayBuffer 格式/n let buffer = stringUtils.hex2buffer(deviceId);/n let uint8Array: Uint8Array = new Uint8Array(buffer);/n let results: Array<number> = [];/n uint8Array.forEach((value) => results.push(value));/n return results;/n}/n/n/n该函数首先检查 deviceId 是否为空,并去除左右可能的空白字符。然后,它判断 deviceId 的长度是否超过指定位数,如果超过则抛出错误。如果 deviceId 的长度小于指定位数,则在前面补 0。最后,使用 stringUtils.hex2buffer() 函数将 deviceId 转换为字节数组 ArrayBuffer 格式,并将结果转换为一个包含字节值的数字数组。/n/n### 2. 将字节数组 (ArrayBuffer) 转换为 deviceId 字符串/n/njavascript/nfunction arrayBufferToDeviceId(arrayBuffer: ArrayBuffer): string {/n // 将 ArrayBuffer 转换为 Uint8Array/n let uint8Array: Uint8Array = new Uint8Array(arrayBuffer);/n // 将 Uint8Array 转换为字符串/n let deviceId: string = '';/n uint8Array.forEach((value) => {/n // 将每个字节转换为十六进制字符串/n let hexString: string = value.toString(16);/n // 如果十六进制字符串长度为 1,则在前面补 0/n if (hexString.length === 1) {/n hexString = '0' + hexString;/n }/n deviceId += hexString;/n });/n return deviceId;/n}/n/n/n该函数首先将 ArrayBuffer 转换为 Uint8Array,然后遍历 Uint8Array 中的每个字节,将其转换为十六进制字符串,并拼接成最终的 deviceId 字符串。如果十六进制字符串长度为 1,则在前面补 0。/n/n### 优化建议/n/n* 使用 ES6 字符串模板:在代码中使用 ES6 字符串模板可以使代码更易读,例如 throw new Error//'待转换的设备地址不能超过 ${length} 位'/。/n* **使用 Array.from()方法**:可以使用Array.from()方法将 Uint8Array 转换为数字数组,例如results = Array.from(uint8Array)。/n* **使用 Uint8Array.map()方法**:可以使用Uint8Array.map()方法将 Uint8Array 转换为十六进制字符串数组,例如hexStrings = uint8Array.map(value => value.toString(16).padStart(2, '0'))。/n* **使用 Array.join()方法**:可以使用Array.join()方法将十六进制字符串数组拼接成 deviceId 字符串,例如deviceId = hexStrings.join('')`。/n/n通过以上方法,开发者可以轻松地在 JavaScript 中进行 deviceId 与字节数组的相互转换,提高代码效率和可读性。/n
原文地址: https://www.cveoy.top/t/topic/qkst 著作权归作者所有。请勿转载和采集!