UNPKG

1.68 kBJavaScriptView Raw
1const {Base64} = require("./base64");
2
3/* Convert a byte to string */
4function byte2hexStr(byte) {
5 var hexByteMap = "0123456789ABCDEF";
6 var str = "";
7 str += hexByteMap.charAt(byte >> 4);
8 str += hexByteMap.charAt(byte & 0x0f);
9 return str;
10}
11
12/**
13 * Converts a byte array to string
14 *
15 * @param {Uint8Array} arr byte array
16 * @returns {string}
17 */
18function bytesToString(arr) {
19 if (typeof arr === 'string') {
20 return arr;
21 }
22 let str = '',
23 _arr = arr;
24 for (let i = 0; i < _arr.length; i++) {
25 let one = _arr[i].toString(2), v = one.match(/^1+?(?=0)/);
26 if (v && one.length === 8) {
27 let bytesLength = v[0].length;
28 let store = _arr[i].toString(2).slice(7 - bytesLength);
29 for (let st = 1; st < bytesLength; st++) {
30 store += _arr[st + i].toString(2).slice(2);
31 }
32 str += String.fromCharCode(parseInt(store, 2));
33 i += bytesLength - 1;
34 } else {
35 str += String.fromCharCode(_arr[i]);
36 }
37 }
38 return str;
39};
40
41/**
42 * Converts a hex string to a decoded string
43 *
44 * @param {string} hex
45 * @returns {string}
46 */
47function hextoString(hex) {
48 let arr = hex.split("");
49 let out = "";
50 for (let i = 0; i < arr.length / 2; i++) {
51 let tmp = "0x" + arr[i * 2] + arr[i * 2 + 1];
52 out += String.fromCharCode(tmp);
53 }
54 return out;
55}
56
57function base64DecodeFromString(string64) {
58 return new Base64().decodeToByteArray(string64);
59}
60
61
62function byteArray2hexStr(byteArray) {
63 let str = "";
64 for (let i = 0; i < (byteArray.length); i++) {
65 str += byte2hexStr(byteArray[i]);
66 }
67 return str;
68}
69
70
71module.exports = {
72 byteArray2hexStr,
73 hextoString,
74 base64DecodeFromString,
75 bytesToString,
76 byte2hexStr
77};