js字節流與字符串、base6四、ArrayBuffer和數組的轉換

一、uint8Array轉stringapp

function uint8ArrayToString(fileData){
  var dataString = "";
  for (var i = 0; i < fileData.length; i++) {
    dataString += String.fromCharCode(fileData[i]);
  }
  return dataString
}
var arr = [48,48,48,48]
uint8ArrayToString(arr)  //"0000"

二、string裝uint8Array ui

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
}
stringToUint8Array('12313132') // Uint8Array(8)   [49, 50, 51, 49, 51, 49, 51, 50]

三、 int轉byte[]編碼

function intTobytes(n) {
  var bytes = [];
  for (var i = 0; i < 2; i++) {
    bytes[i] = n >> (8 - i * 8);
  }
  return bytes;
}
intTobytes(10) // [0, 10]

四、string轉ArrayBuffercode

function stringToArrayBuffer(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;
}
stringToArrayBuffer('00000')
輸出:ArrayBuffer(10) {}

五、arrayBuffer轉stringstring

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

六、base64轉blob(二進制)io

function base64toBlob(base64,type) {  
    // 將base64轉爲Unicode規則編碼
    bstr = atob(base64, type),  
    n = bstr.length,  
    u8arr = new Uint8Array(n);  
    while (n--) {  
        u8arr[n] = bstr.charCodeAt(n) // 轉換編碼後才能夠使用charCodeAt 找到Unicode編碼
    }  
    return new Blob([u8arr], {  
        type,
    })
} 

輸出:Blob {size: 3, type: "png"}
相關文章
相關標籤/搜索