JS uint8Array转String

Uint8Array转字符串

function Uint8ArrayToString(fileData){
  var dataString = "";
  for (var i = 0; i < fileData.length; i++) {
    dataString += String.fromCharCode(fileData[i]);
  }

  return dataString
}

字符串转Uint8Array

function stringToUint8Array(str){
  var arr = [];
  for (var i = 0, j = str.length; i < j; ++i) {
    arr.push(str.charCodeAt(i));
  }

  var tmpUint8Array = new Uint8Array(arr);
  return tmpUint8Array
}

 int转byte[]

function intTobytes2(n) {
  var bytes = [];

  for (var i = 0; i < 2; i++) {
    bytes[i] = n >> (8 - i * 8);

  }
  return bytes;
}

 

string转ArrayBuffer

function str2ab(str) {
  var buf = new ArrayBuffer(str.length * 2); // 每个字符占用2个字节
  var bufView = new Uint16Array(buf);
  for (var i = 0, strLen = str.length; i < strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
}

ArrayBuffer转String

function ab2str(buf) {
  return String.fromCharCode.apply(null, new Uint8Array(buf));
}

 

### 将 Uint8Array 换为 UTF-8 字符串的方法 在 JavaScript 中,可以使用多种方式将 `Uint8Array` 换为 UTF-8 编码的字符串。以下是几种常见的实现方法: #### 方法一:利用 TextDecoder API 现代浏览器提供了内置的 `TextDecoder` 对象来处理不同编码格式的数据换。 ```javascript const uint8Array = new Uint8Array([72, 101, 108, 108, 111]); // 表示 "Hello" const decoder = new TextDecoder('utf-8'); const result = decoder.decode(uint8Array); console.log(result); // 输出: Hello ``` 这种方法简单高效,并且支持多种字符集解码[^1]。 --- #### 方法二:通过 String.fromCharCode 和 Array.prototype.map() 对于不支持 `TextDecoder` 的环境,可以通过手动映射字节数组并将其组合成字符串的方式完成换。 ```javascript function uint8ArrayToString(array) { return String.fromCharCode.apply(null, array); } const uint8Array = new Uint8Array([72, 101, 108, 108, 111]); const result = uint8ArrayToString(uint8Array); console.log(result); // 输出: Hello ``` 需要注意的是,此方法适用于 ASCII 或简单的 Unicode 数据,在复杂场景下可能需要额外处理多字节字符的情况。 --- #### 方法三:借助 CryptoJS 库解析 CryptoJS 提供了一种便捷的方式来操作加密数据流以及字节数组之间的相互化。 ```javascript var u8arr = new Uint8Array([72, 101, 108, 108, 111]); var wordArray = CryptoJS.enc.Utf8.parse(u8arr); var strResult = CryptoJS.enc.Utf8.stringify(wordArray); console.log(strResult); // 输出: Hello ``` 这里展示了如何使用第三方库来进行更复杂的编码和解码工作流程[^2]。 --- #### 注意事项 当涉及 URL 参数传递或者特殊字符序列化时,务必小心处理潜在的编码冲突问题。例如,直接采用 `encodeURIComponent()` 函数可能会引起意外的结果,特别是在跨平台交互过程中容易引发乱码现象[^3]。 此外,虽然 WebAssembly 可以为高性能计算提供强有力的支持,但在日常业务逻辑开发中通常不会直接影响到基本类型的互相变需求[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值