最近开发支付宝小程序蓝牙相关功能,由于支付宝小程序和微信小程序api设计有些不同,需要在 base64, ArrayBuffer, 16进制字符串直接进行转换,记录一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import { Base64 } from 'js-base64';
export function arrayBufferToBase64(buffer: ArrayBuffer): string { return Base64.btoa(String.fromCharCode(...new Uint8Array(buffer))); }
export function base64ToArrayBuffer(base64: string): ArrayBuffer { const binaryString = Base64.atob(base64); const len = binaryString.length; const bytes = new Uint8Array(len); for (let i = 0; i < len; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes.buffer; }
export function buffer2Hex(buffer: ArrayBuffer): string { const hexArr = Array.prototype.map.call(new Uint8Array(buffer), function (bit) { return ('00' + bit.toString(16)).slice(-2); }); return hexArr.join(''); }
export function hex2Buffer(hexStr: string): ArrayBuffer { const Uint8Numbers = hexStr.match(/../g).map((x) => Number('0x' + x)); return new Uint8Array(Uint8Numbers).buffer; }
|