/**
* 解析utf8字符串到16进制
*/
function parseUtf8StringToHex(input) {
input = unescape(encodeURIComponent(input));
var length = input.length;
// 转换到字数组
var words = [];
for (var i = 0; i < length; i++) {
words[i >>> 2] |= (input.charCodeAt(i) & 0xff) << 24 - i % 4 * 8;
}
// 转换到16进制
var hexChars = [];
for (var _i = 0; _i < length; _i++) {
var bite = words[_i >>> 2] >>> 24 - _i % 4 * 8 & 0xff;
hexChars.push((bite >>> 4).toString(16));
hexChars.push((bite & 0x0f).toString(16));
}
return hexChars.join('');
}
/**
* 解析arrayBuffer到16进制字符串
*/
function parseArrayBufferToHex(input) {
return Array.prototype.map.call(new Uint8Array(input), function(x) {
return ('00' + x.toString(16)).slice(-2);
}).join('');
}
/**
* 补全16进制字符串
*/
function leftPad(input, num) {
if (input.length >= num) return input;
return new Array(num - input.length + 1).join('0') + input;
}
/**
* 转成16进制串
*/
function arrayToHex(arr) {
var words = [];
var j = 0;
for (var i = 0; i < arr.length * 2; i += 2) {
words[i >>> 3] |= parseInt(arr[j], 10) << 24 - i % 8 * 4;
j++;
}
// 转换到16进制
var hexChars = [];
for (var _i2 = 0; _i2 < arr.length; _i2++) {
var bite = words[_i2 >>> 2] >>> 24 - _i2 % 4 * 8 & 0xff;
hexChars.push((bite >>> 4).toString(16));
hexChars.push((bite & 0x0f).toString(16));
}
return hexChars.join('');
}
/**
* 转成utf8串
*/
function arrayToUtf8(arr) {
var words = [];
var j = 0;
for (var i = 0; i < arr.length * 2; i += 2) {
words[i >>> 3] |= parseInt(arr[j], 10) << 24 - i % 8 * 4;
j++;
}
try {
var latin1Chars = [];
for (var _i3 = 0; _i3 < arr.length; _i3++) {
var bite = words[_i3 >>> 2] >>> 24 - _i3 % 4 * 8 & 0xff;
latin1Chars.push(String.fromCharCode(bite));
}
return decodeURIComponent(escape(latin1Chars.join('')));
} catch (e) {
throw new Error('Malformed UTF-8 data');
}
}
/**
* 转成ascii码数组
*/
function hexToArray(hexStr) {
var words = [];
var hexStrLength = hexStr.length;
if (hexStrLength % 2 !== 0) {
hexStr = leftPad(hexStr, hexStrLength + 1);
}
hexStrLength = hexStr.length;
for (var i = 0; i < hexStrLength; i += 2) {
words.push(parseInt(hexStr.substr(i, 2), 16));
}
return words;
}
来源:CSDN
作者:赵自煜(赵超)
链接:https://blog.csdn.net/zhaoshidaye666/article/details/103291824