sh-tools 1.2.5 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sh-tools",
3
- "version": "1.2.5",
3
+ "version": "1.2.6",
4
4
  "description": "基于xe-ajax和xe-utils二次封装",
5
5
  "main": "packages/index.js",
6
6
  "scripts": {
@@ -36,8 +36,6 @@
36
36
  "html-webpack-tags-plugin": "^3.0.2",
37
37
  "node-polyfill-webpack-plugin": "^2.0.1",
38
38
  "prettier": "^2.4.1",
39
- "sass": "^1.32.7",
40
- "sass-loader": "^12.0.0",
41
39
  "vue": "^3.3.4"
42
40
  }
43
41
  }
@@ -1,168 +0,0 @@
1
- const isPlainObject = value => {
2
- if (!value || typeof value !== 'object' || {}.toString.call(value) !== '[object Object]') {
3
- return false
4
- }
5
- var proto = Object.getPrototypeOf(value)
6
- if (proto === null) {
7
- return true
8
- }
9
- var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor
10
- return typeof Ctor === 'function' && Ctor instanceof Ctor && Function.prototype.toString.call(Ctor) === Function.prototype.toString.call(Object)
11
- }
12
-
13
- const base64 = {
14
- _keyStr: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
15
- encode: function (input) {
16
- if (!input && input !== 0) {
17
- return input
18
- }
19
- var output = ''
20
- var chr1, chr2, chr3, enc1, enc2, enc3, enc4
21
- var i = 0
22
- input = this._utf8_encode(input)
23
- while (i < input.length) {
24
- chr1 = input.charCodeAt(i++)
25
- chr2 = input.charCodeAt(i++)
26
- chr3 = input.charCodeAt(i++)
27
- enc1 = chr1 >> 2
28
- enc2 = ((chr1 & 3) << 4) | (chr2 >> 4)
29
- enc3 = ((chr2 & 15) << 2) | (chr3 >> 6)
30
- enc4 = chr3 & 63
31
- if (isNaN(chr2)) {
32
- enc3 = enc4 = 64
33
- } else if (isNaN(chr3)) {
34
- enc4 = 64
35
- }
36
- output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4)
37
- }
38
- return output
39
- },
40
- decode: function (input) {
41
- if (!input && input !== 0) {
42
- return input
43
- }
44
- var output = ''
45
- var chr1, chr2, chr3
46
- var enc1, enc2, enc3, enc4
47
- var i = 0
48
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '')
49
- while (i < input.length) {
50
- enc1 = this._keyStr.indexOf(input.charAt(i++))
51
- enc2 = this._keyStr.indexOf(input.charAt(i++))
52
- enc3 = this._keyStr.indexOf(input.charAt(i++))
53
- enc4 = this._keyStr.indexOf(input.charAt(i++))
54
- chr1 = (enc1 << 2) | (enc2 >> 4)
55
- chr2 = ((enc2 & 15) << 4) | (enc3 >> 2)
56
- chr3 = ((enc3 & 3) << 6) | enc4
57
- output = output + String.fromCharCode(chr1)
58
- if (enc3 !== 64) {
59
- output = output + String.fromCharCode(chr2)
60
- }
61
- if (enc4 !== 64) {
62
- output = output + String.fromCharCode(chr3)
63
- }
64
- }
65
- output = this._utf8_decode(output)
66
- return output
67
- },
68
- _utf8_encode: function (string) {
69
- if (!string && string !== 0) {
70
- return string
71
- }
72
- string = String(string)
73
- // console.log(string);
74
- string = string.replace(/\r\n/g, '\n')
75
- var utftext = ''
76
- for (var n = 0; n < string.length; n++) {
77
- var c = string.charCodeAt(n)
78
- if (c < 128) {
79
- utftext += String.fromCharCode(c)
80
- } else if (c > 127 && c < 2048) {
81
- utftext += String.fromCharCode((c >> 6) | 192)
82
- utftext += String.fromCharCode((c & 63) | 128)
83
- } else {
84
- utftext += String.fromCharCode((c >> 12) | 224)
85
- utftext += String.fromCharCode(((c >> 6) & 63) | 128)
86
- utftext += String.fromCharCode((c & 63) | 128)
87
- }
88
- }
89
- return utftext
90
- },
91
- _utf8_decode: function (utftext) {
92
- if (!utftext && utftext !== 0) {
93
- return utftext
94
- }
95
- var stringtext = ''
96
- var i = 0
97
- var c = 0
98
- var c1 = 0
99
- var c2 = 0
100
- while (i < utftext.length) {
101
- c = utftext.charCodeAt(i)
102
- if (c < 128) {
103
- stringtext += String.fromCharCode(c)
104
- i++
105
- } else if (c > 191 && c < 224) {
106
- c2 = utftext.charCodeAt(i + 1)
107
- stringtext += String.fromCharCode(((c & 31) << 6) | (c2 & 63))
108
- i += 2
109
- } else {
110
- c2 = utftext.charCodeAt(i + 1)
111
- let c3 = utftext.charCodeAt(i + 2)
112
- stringtext += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63))
113
- i += 3
114
- }
115
- }
116
- return stringtext
117
- },
118
- /**
119
- * 递归条用对参数进行编码
120
- * @param parameters
121
- * @returns {*}
122
- */
123
- encrypt: function (parameters, isRecursive) {
124
- if (!parameters) {
125
- return parameters
126
- }
127
- var curParam
128
- if (isRecursive) {
129
- // 递归调用
130
- curParam = parameters
131
- } else {
132
- curParam = JSON.parse(JSON.stringify(parameters))
133
- }
134
- if (Array.isArray(curParam)) {
135
- // 是数组
136
- curParam.forEach((row, index) => {
137
- if (!row && row !== 0) {
138
- // 非空的不处理
139
- return
140
- }
141
- if (isPlainObject(row) || Array.isArray(row)) {
142
- // 对象和数组需要递归
143
- this.encrypt(row, true)
144
- } else {
145
- // 其他直接加密
146
- curParam[index] = this.encode(row)
147
- }
148
- })
149
- } else if (isPlainObject(curParam)) {
150
- // 对象
151
- for (var key in curParam) {
152
- if (!curParam[key] && curParam[key] !== 0) {
153
- // 非空的不处理
154
- continue
155
- }
156
- if (isPlainObject(curParam[key]) || Array.isArray(curParam[key])) {
157
- // 对象和数组需要递归
158
- this.encrypt(curParam[key], true)
159
- } else {
160
- curParam[key] = this.encode(curParam[key])
161
- }
162
- }
163
- }
164
- return curParam
165
- }
166
- }
167
-
168
- export default base64
@@ -1,92 +0,0 @@
1
- const hex = {
2
- encode: function (b, pos, len) {
3
- var hexCh = new Array(len * 2)
4
- var hexCode = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
5
- for (var i = pos, j = 0; i < len + pos; i++, j++) {
6
- hexCh[j] = hexCode[(b[i] & 0xff) >> 4]
7
- hexCh[++j] = hexCode[b[i] & 0x0f]
8
- }
9
- return hexCh.join('')
10
- },
11
- decode: function (hex) {
12
- if (hex == null || hex === '') {
13
- return null
14
- }
15
- if (hex.length % 2 !== 0) {
16
- return null
17
- }
18
- var ascLen = hex.length / 2
19
- var hexCh = this.toCharCodeArray(hex)
20
- var asc = new Array(ascLen)
21
- for (var i = 0; i < ascLen; i++) {
22
- if (hexCh[2 * i] >= 0x30 && hexCh[2 * i] <= 0x39) {
23
- asc[i] = (hexCh[2 * i] - 0x30) << 4
24
- } else if (hexCh[2 * i] >= 0x41 && hexCh[2 * i] <= 0x46) {
25
- // A-F : 0x41-0x46
26
- asc[i] = (hexCh[2 * i] - 0x41 + 10) << 4
27
- } else if (hexCh[2 * i] >= 0x61 && hexCh[2 * i] <= 0x66) {
28
- // a-f : 0x61-0x66
29
- asc[i] = (hexCh[2 * i] - 0x61 + 10) << 4
30
- } else {
31
- return null
32
- }
33
- if (hexCh[2 * i + 1] >= 0x30 && hexCh[2 * i + 1] <= 0x39) {
34
- asc[i] = asc[i] | (hexCh[2 * i + 1] - 0x30)
35
- } else if (hexCh[2 * i + 1] >= 0x41 && hexCh[2 * i + 1] <= 0x46) {
36
- asc[i] = asc[i] | (hexCh[2 * i + 1] - 0x41 + 10)
37
- } else if (hexCh[2 * i + 1] >= 0x61 && hexCh[2 * i + 1] <= 0x66) {
38
- asc[i] = asc[i] | (hexCh[2 * i + 1] - 0x61 + 10)
39
- } else {
40
- return null
41
- }
42
- }
43
- return asc
44
- },
45
- utf8StrToHex: function (utf8Str) {
46
- var ens = encodeURIComponent(utf8Str)
47
- var es = unescape(ens)
48
- var esLen = es.length
49
- // Convert
50
- var words = []
51
- for (var i = 0; i < esLen; i++) {
52
- words[i] = es.charCodeAt(i).toString(16)
53
- }
54
- return words.join('')
55
- },
56
- utf8StrToBytes: function (utf8Str) {
57
- var ens = encodeURIComponent(utf8Str)
58
- var es = unescape(ens)
59
- var esLen = es.length
60
- // Convert
61
- var words = []
62
- for (var i = 0; i < esLen; i++) {
63
- words[i] = es.charCodeAt(i)
64
- }
65
- return words
66
- },
67
- hexToUtf8Str: function (utf8Str) {
68
- var utf8Byte = this.decode(utf8Str)
69
- var latin1Chars = []
70
- for (var i = 0; i < utf8Byte.length; i++) {
71
- latin1Chars.push(String.fromCharCode(utf8Byte[i]))
72
- }
73
- return decodeURIComponent(escape(latin1Chars.join('')))
74
- },
75
- bytesToUtf8Str: function (bytesArray) {
76
- var utf8Byte = bytesArray
77
- var latin1Chars = []
78
- for (var i = 0; i < utf8Byte.length; i++) {
79
- latin1Chars.push(String.fromCharCode(utf8Byte[i]))
80
- }
81
- return decodeURIComponent(escape(latin1Chars.join('')))
82
- },
83
- toCharCodeArray: function (chs) {
84
- var chArr = new Array(chs.length)
85
- for (var i = 0; i < chs.length; i++) {
86
- chArr[i] = chs.charCodeAt(i)
87
- }
88
- return chArr
89
- }
90
- }
91
-
92
- export default hex
@@ -1,13 +0,0 @@
1
- import hex from './hex'
2
- import SM3Digest from './sm3'
3
-
4
- function smSecret(inputtext) {
5
- var dataBy = hex.utf8StrToBytes(inputtext)
6
- var sm3 = new SM3Digest()
7
- sm3.update(dataBy, 0, dataBy.length) // 数据很多的话,可以分多次update
8
- var sm3Hash = sm3.doFinal() // 得到的数据是个byte数组
9
- var sm3HashHex = hex.encode(sm3Hash, 0, sm3Hash.length) // 编码成16进制可见字符
10
- return sm3HashHex
11
- }
12
-
13
- export default smSecret
@@ -1,276 +0,0 @@
1
- import { arrayCopy, longToByte, intToByte, intArrayToByteArray, byteToInt, byteArrayToIntArray } from './util'
2
- /*
3
- * sm3-1.0.js
4
- *
5
- * Copyright (c) 2019 RuXing Liang
6
- */
7
- /**
8
- * @name sm3-1.0.js
9
- * @author RuXing Liang
10
- * @version 1.0.0 (2019-04-16)
11
- */
12
-
13
- // 加密数据不能超过500M
14
-
15
- function SM3Digest() {
16
- this.ivByte = new Array(
17
- 0x73,
18
- 0x80,
19
- 0x16,
20
- 0x6f,
21
- 0x49,
22
- 0x14,
23
- 0xb2,
24
- 0xb9,
25
- 0x17,
26
- 0x24,
27
- 0x42,
28
- 0xd7,
29
- 0xda,
30
- 0x8a,
31
- 0x06,
32
- 0x00,
33
- 0xa9,
34
- 0x6f,
35
- 0x30,
36
- 0xbc,
37
- 0x16,
38
- 0x31,
39
- 0x38,
40
- 0xaa,
41
- 0xe3,
42
- 0x8d,
43
- 0xee,
44
- 0x4d,
45
- 0xb0,
46
- 0xfb,
47
- 0x0e,
48
- 0x4e
49
- )
50
- this.iv = byteArrayToIntArray(this.ivByte)
51
- this.tj = new Array(64)
52
- this.BLOCK_BYTE_LEN = 64
53
-
54
- this.vbuf = new Array(8)
55
- // 数据缓冲区
56
- this.dataBuf = new Array(64)
57
- // 缓冲区长度
58
- this.dataBufLen = 0
59
- // 缓冲区总长度
60
- this.totalLen = 0 // 事实上需要long,后续需改进
61
-
62
- for (var i = 0; i < 64; i++) {
63
- if (i <= 15) {
64
- this.tj[i] = 0x79cc4519
65
- } else {
66
- this.tj[i] = 0x7a879d8a
67
- }
68
- }
69
- arrayCopy(this.iv, 0, this.vbuf, 0, this.vbuf.length)
70
- }
71
-
72
- SM3Digest.prototype = {
73
- ffj: function (x, y, z, i) {
74
- var tmp
75
- if (i <= 15) {
76
- tmp = x ^ y ^ z
77
- } else {
78
- tmp = (x & y) | (x & z) | (y & z)
79
- }
80
-
81
- return tmp
82
- },
83
- ggj: function (x, y, z, i) {
84
- var tmp = 0
85
- if (i <= 15) {
86
- tmp = x ^ y ^ z
87
- } else {
88
- tmp = (x & y) | (~x & z)
89
- }
90
-
91
- return tmp
92
- },
93
- p0: function (x) {
94
- // 这里的公式是:对于一个二进制有n位的数字循环左移(循环右移)m位,
95
- // 可以将此数字左移(无符号右移)m位的结果与此数字 无符号 右移(左移)n-m位的结果进行或操作。
96
- return x ^ ((x << 9) | (x >>> (32 - 9))) ^ ((x << 17) | (x >>> (32 - 17)))
97
- },
98
- p1: function (x) {
99
- // 这里的公式是:对于一个二进制有n位的数字循环左移(循环右移)m位,
100
- // 可以将此数字左移(无符号右移)m位的结果与此数字 无符号 右移(左移)n-m位的结果进行或操作。
101
- return x ^ ((x << 15) | (x >>> (32 - 15))) ^ ((x << 23) | (x >>> (32 - 23)))
102
- },
103
-
104
- /**
105
- * 循环左移
106
- */
107
- cycleLeft: function (x, moveLen) {
108
- return (x << moveLen) | (x >>> (32 - moveLen))
109
- },
110
-
111
- /**
112
- * 消息填充函数
113
- * @param data
114
- * @return
115
- */
116
- padding: function (data) {
117
- var k = 0
118
- var len = data.length
119
- var padding
120
-
121
- k = 64 - ((len + 1 + 8) % 64)
122
- if (k >= 64) {
123
- k = 0
124
- }
125
- padding = new Array(k + 1 + len + 8)
126
- padding[len] = 1 << 7
127
-
128
- arrayCopy(data, 0, padding, 0, len)
129
- arrayCopy(longToByte(this.totalLen << 3), 0, padding, len + k + 1, 8)
130
-
131
- return padding
132
- },
133
-
134
- /**
135
- * 对数据进行分组迭代,每64个字节迭代一次
136
- * <br>1、对消息进行分组,由于是int类型,则每16个分一组,对每一组再调用{@link #expand}进行拓展
137
- * <br>2、使用上一轮的迭代结果V,调用{@link #cf}进行本轮迭代
138
- * <br>3、最后一轮迭代结果复制进缓冲区vbuf
139
- * @param message
140
- */
141
- iterate: function (message) {
142
- var len = message.length
143
- var n = parseInt(len / 16)
144
- var v, b
145
- var ep
146
-
147
- v = this.vbuf
148
- b = new Array(16)
149
-
150
- for (var i = 0; i < n; i++) {
151
- arrayCopy(message, i * 16, b, 0, b.length)
152
- ep = this.expand(b)
153
- v = this.cf(v, ep[0], ep[1])
154
- }
155
- arrayCopy(v, 0, this.vbuf, 0, v.length)
156
- },
157
-
158
- /**
159
- * 消息数据拓展函数
160
- * @param b
161
- * @return
162
- */
163
- expand: function (b) {
164
- var w1 = new Array(68)
165
- var w2 = new Array(64)
166
-
167
- arrayCopy(b, 0, w1, 0, b.length)
168
-
169
- for (let i = 16; i < w1.length; i++) {
170
- w1[i] = this.p1(w1[i - 16] ^ w1[i - 9] ^ this.cycleLeft(w1[i - 3], 15)) ^ this.cycleLeft(w1[i - 13], 7) ^ w1[i - 6]
171
- }
172
-
173
- for (let i = 0; i < w2.length; i++) {
174
- w2[i] = w1[i] ^ w1[i + 4]
175
- }
176
-
177
- return new Array(w1, w2)
178
- },
179
-
180
- /**
181
- * 迭代压缩函数
182
- *
183
- * @param v
184
- * @param w1
185
- * @param w2
186
- * @return
187
- */
188
- cf: function (v, w1, w2) {
189
- var result
190
- var a, b, c, d, e, f, g, h, ss1, ss2, tt1, tt2
191
- a = v[0]
192
- b = v[1]
193
- c = v[2]
194
- d = v[3]
195
- e = v[4]
196
- f = v[5]
197
- g = v[6]
198
- h = v[7]
199
-
200
- for (var i = 0; i < 64; i++) {
201
- ss1 = this.cycleLeft(this.cycleLeft(a, 12) + e + this.cycleLeft(this.tj[i], i), 7)
202
- ss2 = ss1 ^ this.cycleLeft(a, 12)
203
- tt1 = this.ffj(a, b, c, i) + d + ss2 + w2[i]
204
- tt2 = this.ggj(e, f, g, i) + h + ss1 + w1[i]
205
- d = c
206
- c = this.cycleLeft(b, 9)
207
- b = a
208
- a = tt1
209
- h = g
210
- g = this.cycleLeft(f, 19)
211
- f = e
212
- e = this.p0(tt2)
213
- }
214
-
215
- result = new Array(8)
216
- result[0] = a ^ v[0]
217
- result[1] = b ^ v[1]
218
- result[2] = c ^ v[2]
219
- result[3] = d ^ v[3]
220
- result[4] = e ^ v[4]
221
- result[5] = f ^ v[5]
222
- result[6] = g ^ v[6]
223
- result[7] = h ^ v[7]
224
-
225
- return result
226
- },
227
-
228
- digest: function (data) {
229
- var mac
230
-
231
- var padding = this.padding(data)
232
- var paddingInt = byteArrayToIntArray(padding)
233
- this.iterate(paddingInt)
234
- var macInt = this.vbuf
235
- mac = intArrayToByteArray(macInt)
236
- return mac
237
- },
238
-
239
- update: function (data, pos, len) {
240
- var loop = parseInt((len + this.dataBufLen) / 64) // 向下取整
241
- this.totalLen += len
242
-
243
- if (len + this.dataBufLen < this.BLOCK_BYTE_LEN) {
244
- arrayCopy(data, 0, this.dataBuf, this.dataBufLen, len)
245
- this.dataBufLen = len + this.dataBufLen
246
- } else {
247
- var dataInt
248
- arrayCopy(data, 0, this.dataBuf, this.dataBufLen, this.BLOCK_BYTE_LEN - this.dataBufLen)
249
- dataInt = byteArrayToIntArray(this.dataBuf)
250
- this.iterate(dataInt)
251
- for (var i = 1; i < loop; i++) {
252
- arrayCopy(data, i * this.BLOCK_BYTE_LEN - this.dataBufLen, this.dataBuf, 0, this.BLOCK_BYTE_LEN)
253
- dataInt = byteArrayToIntArray(this.dataBuf)
254
- this.iterate(dataInt)
255
- }
256
- arrayCopy(data, loop * this.BLOCK_BYTE_LEN - this.dataBufLen, this.dataBuf, 0, len - (loop * this.BLOCK_BYTE_LEN - this.dataBufLen))
257
- this.dataBufLen = len - (loop * this.BLOCK_BYTE_LEN - this.dataBufLen)
258
- }
259
- },
260
-
261
- doFinal: function () {
262
- var mac
263
- var finalData = new Array(this.dataBufLen)
264
-
265
- arrayCopy(this.dataBuf, 0, finalData, 0, this.dataBufLen)
266
- // 对不足64字节的数据进行填充
267
- var paddingArr = this.padding(finalData)
268
- var paddingInt = byteArrayToIntArray(paddingArr)
269
- this.iterate(paddingInt)
270
- var macInt = this.vbuf
271
- mac = intArrayToByteArray(macInt)
272
- return mac
273
- }
274
- }
275
-
276
- export default SM3Digest
@@ -1,92 +0,0 @@
1
- /*
2
- *
3
- * 字节流转换工具js
4
- *
5
- */
6
-
7
- /*
8
- * 数组复制
9
- */
10
- export const arrayCopy = (src, pos1, dest, pos2, len) => {
11
- var realLen = len
12
- if (pos1 + len > src.length && pos2 + len <= dest.length) {
13
- realLen = src.length - pos1
14
- } else if (pos2 + len > dest.length && pos1 + len <= src.length) {
15
- realLen = dest.length - pos2
16
- } else if (pos1 + len <= src.length && pos2 + len <= dest.length) {
17
- realLen = len
18
- } else if (dest.length < src.length) {
19
- realLen = dest.length - pos2
20
- } else {
21
- realLen = src.length - pos2
22
- }
23
-
24
- for (var i = 0; i < realLen; i++) {
25
- dest[i + pos2] = src[i + pos1]
26
- }
27
- }
28
-
29
- /*
30
- * 长整型转成字节,一个长整型为8字节
31
- * 返回:字节数组
32
- */
33
- export const longToByte = num => {
34
- // TODO 这里目前只转换了低四字节,因为js没有长整型,得要封装
35
- return new Array(0, 0, 0, 0, (num >> 24) & 0x000000ff, (num >> 16) & 0x000000ff, (num >> 8) & 0x000000ff, num & 0x000000ff)
36
- }
37
-
38
- /*
39
- * int数转成byte数组
40
- * 事实上只不过转成byte大小的数,实际占用空间还是4字节
41
- * 返回:字节数组
42
- */
43
- export const intToByte = num => {
44
- return new Array((num >> 24) & 0x000000ff, (num >> 16) & 0x000000ff, (num >> 8) & 0x000000ff, num & 0x000000ff)
45
- }
46
-
47
- /*
48
- * int数组转成byte数组,一个int数值转成四个byte
49
- * 返回:byte数组
50
- */
51
- export const intArrayToByteArray = nums => {
52
- var b = new Array(nums.length * 4)
53
-
54
- for (var i = 0; i < nums.length; i++) {
55
- arrayCopy(intToByte(nums[i]), 0, b, i * 4, 4)
56
- }
57
-
58
- return b
59
- }
60
-
61
- /*
62
- * byte数组转成int数值
63
- * 返回:int数值
64
- */
65
- export const byteToInt = (b, pos) => {
66
- if (pos + 3 < b.length) {
67
- return (b[pos] << 24) | (b[pos + 1] << 16) | (b[pos + 2] << 8) | b[pos + 3]
68
- } else if (pos + 2 < b.length) {
69
- return (b[pos + 1] << 16) | (b[pos + 2] << 8) | b[pos + 3]
70
- } else if (pos + 1 < b.length) {
71
- return (b[pos] << 8) | b[pos + 1]
72
- } else {
73
- return b[pos]
74
- }
75
- }
76
-
77
- /*
78
- * byte数组转成int数组,每四个字节转成一个int数值
79
- *
80
- */
81
- export const byteArrayToIntArray = b => {
82
- // var arrLen = b.length%4==0 ? b.length/4:b.length/4+1;
83
- var arrLen = Math.ceil(b.length / 4) // 向上取整
84
- var out = new Array(arrLen)
85
- for (let i = 0; i < b.length; i++) {
86
- b[i] = b[i] & 0xff // 避免负数造成影响
87
- }
88
- for (let i = 0; i < out.length; i++) {
89
- out[i] = byteToInt(b, i * 4)
90
- }
91
- return out
92
- }