1.字符串base 编码
npm下载
npm install --save js-base64
引入
let Base64 = require("js-base64").Base64;
import { Base64 } from 'js-base64';
使用
Base64.encode("潘高"); // 5r2Y6auY
Base64.decode("5r2Y6auY"); // 潘高
系统文件base64编码
解码使用 atob() base-64 编码的字符串。
编码使用方法是 btoa() base-64
ArrayBuffer TypedArray DataView 二进制数据 虽然不是很明白 但先记录一下 参考链接 https://www.cnblogs.com/jixiaohua/p/10714662.html
base转ArrayBuffer
function base64ToUint8Array(base64String) {
const padding = '='.repeat((4 - base64String.length % 4) % 4);
const base64 = (base64String + padding)
.replace(/\-/g, '+')
.replace(/_/g, '/');
const rawData = window.atob(base64);
const outputArray = new Uint8Array(rawData.length);
for (let i = 0; i < rawData.length; ++i) {
outputArray[i] = rawData.charCodeAt(i);
}
return outputArray;
}
ArrayBuffer --> base64
function arrayBufferToBase64(buffer) {
var binary = '';
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}
来自:https://www.cnblogs.com/zyulike/p/10573324.html new Blob([uInt8Array], { type: contentType })操作二进制对象
base64 拼接 转Blob对象操作
// 建立WebSocket
socket(url) {
let socket = new WebSocket(url);
let au = [];
socket.onopen = () => {
socket.send(JSON.stringify(this.wxsData));
};
socket.onmessage = function(res) {
if (res && res.data) {
let data = JSON.parse(res.data);
console.log(data, "data");
if (data.code == 0) {
au.push("data:audio/wav;base64," + data.data.audio);
if (data.data.status == 2) {
let rawLength = 0,
contentType = "",
parts = "",
raw = "";
au.forEach(code => {
parts = code.split(";base64,");
contentType = parts[0].split(":")[1];
raw += window.atob(parts[1]);
rawLength += raw.length;
});
let uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
let xx = new Blob([uInt8Array], { type: contentType });
let myAuto = document.createElement("audio");
myAuto.src = URL.createObjectURL(xx);
myAuto.play();
}
}
}
// audio(res);
};
socket.onerror = function(err) {
console.log(err, "-----------err");
};
socket.onclose = function(end) {
console.log(end, "--------------end");
};
}
@[TOC](base64 拼接 转Blob对象操作(简化) )
// 建立WebSocket
socket(url) {
let socket = new WebSocket(url);
let au = '';
socket.onopen = () => {
socket.send(JSON.stringify(this.wxsData));
};
socket.onmessage = function(res) {
if (res && res.data) {
let data = JSON.parse(res.data);
console.log(data, "data");
if (data.code == 0) {
au += data.data.audio);
if (data.data.status == 2) {
let rawLength = au.length;
let uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = au.charCodeAt(i);
}
let xx = new Blob([uInt8Array], { type: "audio/wav" });
let myAuto = document.createElement("audio");
myAuto.src = URL.createObjectURL(xx);
myAuto.play();
}
}
}
// audio(res);
};
socket.onerror = function(err) {
console.log(err, "-----------err");
};
socket.onclose = function(end) {
console.log(end, "--------------end");
};
}
base64 拼接 转Blob对象 fileReader 转base64
// 建立WebSocket
socket(url) {
let socket = new WebSocket(url);
let au = '';
socket.onopen = () => {
socket.send(JSON.stringify(this.wxsData));
};
socket.onmessage = function(res) {
if (res && res.data) {
let data = JSON.parse(res.data);
console.log(data, "data");
if (data.code == 0) {
au += data.data.audio);
if (data.data.status == 2) {
let uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
let xx = new Blob([uInt8Array], { type: "audio/wav" });
const fileReader = new FileReader();
fileReader.onload = e => {
console.log(e.target.result, "e.target.result");
let myAuto = document.createElement("audio");
myAuto.src = e.target.result;
myAuto.play();
};
// readAsDataURL
fileReader.readAsDataURL(xx);
// readAsDataURL
/*reader.abort() // 取消文件读取操作
reader.readAsArrayBuffer() // 返回一个 ArrayBuffer 的数据对象
reader.readAsBinaryString() // 返回原始二进制数据内容 (实验性的api)
reader.readAsDataURL() // 返回 base64 内容
reader.readAsText() // 返回文本内容
// 上述方法皆对于 file 或 blob 有效
//fileReader.readAsDataURL(xx);
}
}
}
// audio(res);
};
socket.onerror = function(err) {
console.log(err, "-----------err");
};
socket.onclose = function(end) {
console.log(end, "--------------end");
};
}
base64 拼接 转Blob对象 fromCharCode转base64
// 建立WebSocket
socket(url) {
let socket = new WebSocket(url);
let au = '';
socket.onopen = () => {
socket.send(JSON.stringify(this.wxsData));
};
socket.onmessage = function(res) {
if (res && res.data) {
let data = JSON.parse(res.data);
console.log(data, "data");
if (data.code == 0) {
au += data.data.audio);
if (data.data.status == 2) {
let uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
function arrayBufferToBase64(buffer) {
var binary = "";
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}
let xx = arrayBufferToBase64(uInt8Array);
let myAuto = document.createElement("audio");
myAuto.src = "data:audio/wav;base64,"+ xx;
myAuto.play();
}
}
}
// audio(res);
};
socket.onerror = function(err) {
console.log(err, "-----------err");
};
socket.onclose = function(end) {
console.log(end, "--------------end");
};
}
@[TOC](使用atob() 和btoa() )
socket(url) {
let socket = new WebSocket(url);
let au = '';
socket.onopen = () => {
socket.send(JSON.stringify(this.wxsData));
};
socket.onmessage = function(res) {
if (res && res.data) {
let data = JSON.parse(res.data);
console.log(data, "data");
if (data.code == 0) {
au += data.data.audio);
if (data.data.status == 2) {
let uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
function arrayBufferToBase64(buffer) {
var binary = "";
var bytes = new Uint8Array(buffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}
let xx = arrayBufferToBase64(uInt8Array);
let myAuto = document.createElement("audio");
myAuto.src = "data:audio/wav;base64,"+ xx;
myAuto.play();
}
}
}
// audio(res);
};
socket.onerror = function(err) {
console.log(err, "-----------err");
};
socket.onclose = function(end) {
console.log(end, "--------------end");
};
}