<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
</body>
<script>
function parseHexToNumber(info,sign=0,endian = 0) {
if(info.length%2==1)return "ERROR";
if(endian==0){
//输入的是小端,需要转化为大端
let l = info.length;
let __res = "";
for(let i=0;i<l/2;i++){
__res += info.substr(2*(l/2-i-1),2);
}
info = __res;
}
if(sign==1){
let res = 0;
let l = info.length/2;
let fh = parseInt(info.substr(0,2),16);
if(fh>127){
let __array = new Array(l);
__array[0] = fh-128;
for(let i=1;i<l;i++){ __array[i] = parseInt(info.substr(2*i,2),16); }
for(let i=__array.length-1;i>=0;i--){
let __data = __array[i];
if(__data>0) {__array[i] = __data -1;break;}
else __array[i] = 255;
}
for(let i=__array.length-1;i>=0;i--){
let __data = __array[i];
if(i>0){__array[i] = 256-1-__array[i];}
else{__array[i] = 128-1-__array[i];}
}
//console.log("__array => ",__array);
for(let i=0;i<__array.length;i++){
res = res + __array[i];
if(i<(__array.length-1)) res *= 256;
}
return -1*res;
}
else{
for(let i=0;i<l;i++){
let __res = parseInt(info.substr(2*i,2),16);
res += __res;
if(i<(l-1)) res *= 256;
}
}
return res;
}else{
let res = 0;
let l = info.length/2;
for(let i=0;i<l;i++){
let __res = parseInt(info.substr(2*i,2),16);
res += __res;
if(i<(l-1)) res *= 256;
}
return res;
}
return "ERROR";
}
function parseNumberToHex(num,bytesLen=2,endian = 0) {
let res = "";
let sup = "";
for(let i=0;i<bytesLen*2;i++){
sup += "0";
}
if(num>0){
while(num>=1){
let __data = num%256;
if(__data>15) res = res + __data.toString(16);
else res = res + "0"+__data.toString(16);
num = parseInt(num /256);
}
res += sup;
}else{
let __array = new Array(bytesLen);
num = -num;
for(let i=0;i<bytesLen;i++){
if(num>=1){
let __data = 256 - 1 - num%256;
__array[i] = __data;
num = parseInt(num /256);
}
else{
if(i<(__array.length-1))__array[i] = 255;
else __array[i]=127;
}
}
let flag = 0;
while(1){
if(flag>=bytesLen)break;
if((__array[flag]+1)>255){flag++;}
else{break;}
}
for(let i=0;i<=flag;i++){ __array[i] += 1; }
if(__array[bytesLen-1]<128)__array[bytesLen-1] += 128;
for(let i=0;i<bytesLen;i++){
let __data = __array[i];
if(__data>15) res = res + __data.toString(16);
else res = res + "0"+__data.toString(16);
}
}
if(endian>0){
let l = res.length;
let __res = "";
for(let i=0;i<l/2;i++){
__res += res.substr(2*(l/2-i-1),2);
}
res = __res;
}
return res;
}
let res = 0;
res= parseHexToNumber("FFFF",1);
console.log("res1 => ",res);
res= parseHexToNumber("0180",1);
console.log("res2 => ",res);
res= parseHexToNumber("ffffffff",1);
console.log("res3 => ",res);
res= parseNumberToHex(-1,1);
console.log("parseNumberToHex res4 => ",res);
res= parseNumberToHex(-1,8);
console.log("parseNumberToHex res4 => ",res);
res= parseNumberToHex(-1,8,1);
console.log("parseNumberToHex res4 => ",res);
</script>
</html>