123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- function strToHexCharCode(str) {
- if (str === "") return "";
- var hexCharCode = [];
- for (var i = 0; i < str.length; i++) {
- hexCharCode.push(str.charCodeAt(i).toString(16))
- }
- return hexCharCode.join("").toUpperCase()
- }
-
- function bccCheck(data) {
- var bcc = "";
- for (var a = 0; a < data.length / 2; a++) {
- bcc ^= parseInt(data.substring(2 * a, 2 * a + 2), 16)
- }
- if (bcc.length == 1) {
- bcc = "0" + bcc
- }
- return tenToHex(bcc, 2).toUpperCase()
- }
-
- function tenToHex(num, len, boo) {
- var hex = num.toString(16);
- var zero = "";
- for (var a = 0; a < len - hex.length; a++) {
- zero += "0"
- }
- var ret = "";
- if (boo) {
- if (hex.length % 2 == 0) {} else {
- hex = "0" + hex;
- zero = zero.substring(1)
- }
- ret = hex + zero
- } else if (!boo) {
- ret = zero + hex
- }
- return ret.toUpperCase()
- }
-
- function hexToString(str) {
- var trimedStr = str.trim();
- var rawStr = trimedStr.substr(0, 2).toLowerCase() === "0x" ? trimedStr.substr(2) : trimedStr;
- var len = rawStr.length;
- if (len % 2 !== 0) {
- alert("Illegal Format ASCII Code!");
- return ""
- }
- var curCharCode;
- var resultStr = [];
- for (var i = 0; i < len; i = i + 2) {
- curCharCode = parseInt(rawStr.substr(i, 2), 16);
- resultStr.push(String.fromCharCode(curCharCode))
- }
- return resultStr.join("").toUpperCase()
- }
-
- function encodeUtf8(text) {
- const code = encodeURIComponent(text);
- const bytes = [];
- for (var i = 0; i < code.length; i++) {
- const c = code.charAt(i);
- if (c === "%") {
- const hex = code.charAt(i + 1) + code.charAt(i + 2);
- const hexVal = parseInt(hex, 16);
- bytes.push(hexVal);
- i += 2
- } else bytes.push(c.charCodeAt(0))
- }
- return bytes
- }
-
- function hexToTen(sixteen) {
- var ten = parseInt(sixteen, 16);
- return ten
- }
-
- function str2utf8(str) {
- var code;
- var utf = "";
- for (var i = 0; i < str.length; i++) {
- code = str.charCodeAt(i);
- if (code < 128) {
- utf += str.charAt(i)
- } else if (code < 2048) {
- utf += String.fromCharCode(192 | code >> 6 & 31);
- utf += String.fromCharCode(128 | code >> 0 & 63)
- } else if (code < 65536) {
- utf += String.fromCharCode(224 | code >> 12 & 15);
- utf += String.fromCharCode(128 | code >> 6 & 63);
- utf += String.fromCharCode(128 | code >> 0 & 63)
- } else {
- throw "不是UCS-2字符集"
- }
- }
- return utf
- }
-
- function hexTobin(str) {
- str = str.toUpperCase();
- let hex_array = [{
- key: 0,
- val: "0000"
- }, {
- key: 1,
- val: "0001"
- }, {
- key: 2,
- val: "0010"
- }, {
- key: 3,
- val: "0011"
- }, {
- key: 4,
- val: "0100"
- }, {
- key: 5,
- val: "0101"
- }, {
- key: 6,
- val: "0110"
- }, {
- key: 7,
- val: "0111"
- }, {
- key: 8,
- val: "1000"
- }, {
- key: 9,
- val: "1001"
- }, {
- key: "A",
- val: "1010"
- }, {
- key: "B",
- val: "1011"
- }, {
- key: "C",
- val: "1100"
- }, {
- key: "D",
- val: "1101"
- }, {
- key: "E",
- val: "1110"
- }, {
- key: "F",
- val: "1111"
- }];
- let value = "";
- for (let i = 0; i < str.length; i++) {
- for (let j = 0; j < hex_array.length; j++) {
- if (str.charAt(i) == hex_array[j].key) {
- value = value.concat(hex_array[j].val);
- break
- }
- }
- }
- return value
- }
-
- function binTohex(str) {
- let hex_array = [{
- key: 0,
- val: "0000"
- }, {
- key: 1,
- val: "0001"
- }, {
- key: 2,
- val: "0010"
- }, {
- key: 3,
- val: "0011"
- }, {
- key: 4,
- val: "0100"
- }, {
- key: 5,
- val: "0101"
- }, {
- key: 6,
- val: "0110"
- }, {
- key: 7,
- val: "0111"
- }, {
- key: 8,
- val: "1000"
- }, {
- key: 9,
- val: "1001"
- }, {
- key: "a",
- val: "1010"
- }, {
- key: "b",
- val: "1011"
- }, {
- key: "c",
- val: "1100"
- }, {
- key: "d",
- val: "1101"
- }, {
- key: "e",
- val: "1110"
- }, {
- key: "f",
- val: "1111"
- }];
- let value = "";
- let list = [];
- if (str.length % 4 !== 0) {
- let a = "0000";
- let b = a.substring(0, 4 - str.length % 4);
- str = b.concat(str)
- }
- while (str.length > 4) {
- list.push(str.substring(0, 4));
- str = str.substring(4)
- }
- list.push(str);
- for (let i = 0; i < list.length; i++) {
- for (let j = 0; j < hex_array.length; j++) {
- if (list[i] == hex_array[j].val) {
- value = value.concat(hex_array[j].key);
- break
- }
- }
- }
- return value
- }
-
- function strToBuffer(cmd) {
- let buffer = new ArrayBuffer(cmd.length / 2);
- let dataView = new Uint8Array(buffer);
- for (var a = 0; a < cmd.length / 2; a++) {
- dataView[a] = "0x" + cmd.substring(2 * a, 2 * a + 2)
- }
- return buffer
- }
-
- function bufferTohex(buffer) {
- var hexArr = Array.prototype.map.call(new Uint8Array(buffer), function(bit) {
- return ("00" + bit.toString(16)).slice(-2)
- });
- return hexArr.join("")
- }
-
- function isEmpty(data) {
- if (data.length == 0 || data == null || data == "undefined") {
- return true
- }
- return false
- }
-
- function formatTime(date) {
- var year = date.getFullYear();
- var month = date.getMonth() + 1;
- var day = date.getDate();
- var hour = date.getHours();
- var minute = date.getMinutes();
- var second = date.getSeconds();
- return [year, month, day].map(formatNumber).join("/") + " " + [hour, minute, second].map(formatNumber).join(":")
- }
-
- function formatNumber(n) {
- n = n.toString();
- return n[1] ? n : "0" + n
- }
-
- function formatTimeTwo(number, format) {
- var formateArr = ["Y", "M", "D", "h", "m", "s"];
- var returnArr = [];
- var date = new Date(number * 1e3);
- returnArr.push(date.getFullYear());
- returnArr.push(formatNumber(date.getMonth() + 1));
- returnArr.push(formatNumber(date.getDate()));
- returnArr.push(formatNumber(date.getHours()));
- returnArr.push(formatNumber(date.getMinutes()));
- returnArr.push(formatNumber(date.getSeconds()));
- for (var i in returnArr) {
- format = format.replace(formateArr[i], returnArr[i])
- }
- return format
- }
- module.exports = {
- encodeUtf8: encodeUtf8,
- tenToHex: tenToHex,
- hexToTen: hexToTen,
- bccCheck: bccCheck,
- hexToString: hexToString,
- strToHexCharCode: strToHexCharCode,
- str2utf8: str2utf8,
- hexTobin: hexTobin,
- binTohex: binTohex,
- isEmpty: isEmpty,
- strToBuffer: strToBuffer,
- bufferTohex: bufferTohex,
- formatTime: formatTime,
- formatTimeTwo: formatTimeTwo
- };
|