function getBuffer(hexArr) {
let buffer = new ArrayBuffer(hexArr.length)
let dataView = new DataView(buffer);
hexArr.forEach((item, index) => {
dataView.setUint8(index, item);
})
return buffer
}
function hexToAscii(hex) {
var str = '';
for (var i = 0; i < hex.length; i += 2) {
var charCode = parseInt(hex.substr(i, 2), 16);
str += String.fromCharCode(charCode);
}
return str;
}
function getCrcData(hexArr) {
let crcData = 0;
for (let i = 0; i < hexArr.length; i++) {
crcData ^= hexArr[i];
}
return '0x' + crcData.toString(16)
}
在循环中,对 crcData 和当前遍历到的十六进制数组元素进行异或操作(^=)
循环结束后,将计算得到的 CRC 校验值转换为十六进制字符串
5、将日期转换为十六进制字符串数组
javascript复制代码
function dateTohexString(date) {
var date = new Date(date);
var timestamp = Math.floor(date.getTime() / 1000); // 将日期转换为时间戳(以秒为单位)
var buffer = new ArrayBuffer(4);
var dataView = new DataView(buffer);
dataView.setUint32(0, timestamp, true);
var byteArray = new Uint8Array(buffer);
var hexString = Array.from(byteArray).map(byte => byte.toString(16).padStart(2, '0')).join('');
let arr = (hexString.match(/.{1,2}/g))
let hexStringArr = []
arr.forEach(item => {
hexStringArr.push("0x" + item)
})
return hexStringArr
}
function hexStringToDate(hexString) {
var byteArray = new Uint8Array(hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));
var buffer = byteArray.buffer;
var dataView = new DataView(buffer);
var timestamp = dataView.getUint32(0, true) * 1000; // 将秒转换为毫秒
var dateTime = new Date(timestamp);
return dateTime
}