/**此为java中Character类中的方法
|
* @param ch
|
* @param radix
|
*/
|
function digit(ch,radix) {
|
var value = -1;
|
if (radix >= 2 && radix <= 36) {
|
console.log("ch:",ch)
|
var val = getProperties(ch);
|
console.log("val:",val)
|
var kind = val & 0x1F;
|
if (kind == 9) {
|
value = ch + ((val & 0x3E0) >> 5) & 0x1F;
|
}
|
else if ((val & 0xC00) == 0x00000C00) {
|
// Java supradecimal digit
|
value = (ch + ((val & 0x3E0) >> 5) & 0x1F) + 10;
|
}
|
}
|
return (value < radix) ? value : -1;
|
}
|
|
function getProperties(ch) {
|
var A=new Array();
|
var A_DATA = "\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5800\u400F\u5000\u400F\u5800\u400F\u6000\u400F\u5000\u400F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u400F\u5000\u400F\u5000\u400F\u5800\u400F\u6000\u400C\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\u2800"+String.fromCharCode("24")+"\u2800\u601A\u2800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\u6800"+ String.fromCharCode("24")+"\uE800"+ String.fromCharCode("21")+"\uE800"+String.fromCharCode("22")+ "\u6800"+String.fromCharCode("24")+"\u2000"+String.fromCharCode("25")+"\u3800"+String.fromCharCode("24")+"\u2000"+String.fromCharCode("20")+ "\u3800"+String.fromCharCode("24")+ "\u3800"+String.fromCharCode("24")+"\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u3800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+ "\uE800"+String.fromCharCode("25")+"\u6800"+String.fromCharCode("25")+"\uE800"+String.fromCharCode("25")+"\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\x82\u7FE1\x82\u7FE1\x82"
|
A_DATA=A_DATA+ "\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\uE800"+ String.fromCharCode("21")+"\u6800"+String.fromCharCode("24")+"\uE800"+String.fromCharCode("22")+ "\u6800"+String.fromCharCode("27")+ "\u6800\u5017\u6800"+String.fromCharCode("27")+ "\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\uE800"+ String.fromCharCode("21")+"\u6800"+String.fromCharCode("25")+"\uE800"+String.fromCharCode("22")+ "\u6800"+String.fromCharCode("25")+"\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800"
|
A_DATA=A_DATA+ "\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u3800"+String.fromCharCode("12")+ "\u6800"+String.fromCharCode("24")+"\u2800\u601A\u2800\u601A\u2800\u601A\u2800\u601A\u6800"+ String.fromCharCode("28")+ "\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("27")+ "\u6800"+String.fromCharCode("28")+ String.fromCharCode("0")+"\u7005\uE800"+String.fromCharCode("29")+ "\u6800"+String.fromCharCode("25")+"\u4800\u1010\u6800"+String.fromCharCode("28")+ "\u6800"+String.fromCharCode("27")+ "\u2800"+String.fromCharCode("28")+ "\u2800"+String.fromCharCode("25")+"\u1800\u060B\u1800\u060B\u6800"+String.fromCharCode("27")+ "\u07FD\u7002\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("24")+"\u6800"+String.fromCharCode("27")+ "\u1800\u050B"+String.fromCharCode("0")+"\u7005\uE800"+String.fromCharCode("30")+ "\u6800\u080B\u6800\u080B\u6800\u080B\u6800"+String.fromCharCode("24")+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001"
|
A_DATA=A_DATA+ "\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u6800"+String.fromCharCode("25")+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u07FD\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u6800"+ String.fromCharCode("25")+"\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u061D\u7002"
|
|
// var A_DATA = "\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5800\u400F\u5000\u400F\u5800\u400F\u6000\u400F\u5000\u400F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u400F\u5000\u400F\u5000\u400F\u5800\u400F\u6000\u400C\u6800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u2800"+("24").charCodeAt()+"\u2800\u601A\u2800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u6800"+ ("24").charCodeAt()+"\uE800"+ ("21").charCodeAt()+"\uE800"+("22").charCodeAt()+ "\u6800"+("24").charCodeAt()+"\u2000"+("25").charCodeAt()+"\u3800"+("24").charCodeAt()+"\u2000"+("20").charCodeAt()+ "\u3800"+("24").charCodeAt()+ "\u3800"+("24").charCodeAt()+"\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u1800\u3609\u3800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+ "\uE800"+("25").charCodeAt()+"\u6800"+("25").charCodeAt()+"\uE800"+("25").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\x82\u7FE1\x82\u7FE1\x82"
|
// A_DATA=A_DATA+ "\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\x82\u7FE1\uE800"+ ("21").charCodeAt()+"\u6800"+("24").charCodeAt()+"\uE800"+("22").charCodeAt()+ "\u6800"+("27").charCodeAt()+ "\u6800\u5017\u6800"+("27").charCodeAt()+ "\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\x81\u7FE2\uE800"+ ("21").charCodeAt()+"\u6800"+("25").charCodeAt()+"\uE800"+("22").charCodeAt()+ "\u6800"+("25").charCodeAt()+"\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u5000\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800"
|
// A_DATA=A_DATA+ "\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u4800\u100F\u3800"+("12").charCodeAt()+ "\u6800"+("24").charCodeAt()+"\u2800\u601A\u2800\u601A\u2800\u601A\u2800\u601A\u6800"+ ("28").charCodeAt()+ "\u6800"+("24").charCodeAt()+"\u6800"+("27").charCodeAt()+ "\u6800"+("28").charCodeAt()+ ("0").charCodeAt()+"\u7005\uE800"+("29").charCodeAt()+ "\u6800"+("25").charCodeAt()+"\u4800\u1010\u6800"+("28").charCodeAt()+ "\u6800"+("27").charCodeAt()+ "\u2800"+("28").charCodeAt()+ "\u2800"+("25").charCodeAt()+"\u1800\u060B\u1800\u060B\u6800"+("27").charCodeAt()+ "\u07FD\u7002\u6800"+("24").charCodeAt()+"\u6800"+("24").charCodeAt()+"\u6800"+("27").charCodeAt()+ "\u1800\u050B"+("0").charCodeAt()+"\u7005\uE800"+("30").charCodeAt()+ "\u6800\u080B\u6800\u080B\u6800\u080B\u6800"+("24").charCodeAt()+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001"
|
// A_DATA=A_DATA+ "\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u6800"+("25").charCodeAt()+"\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\x82\u7001\u07FD\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u6800"+ ("25").charCodeAt()+"\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\x81\u7002\u061D\u7002"
|
|
|
|
|
|
// var str="䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ堀䀏倀䀏堀䀏怀䀏倀䀏䠀ဏ䠀ဏ䠀ဏ䠀"
|
// str+="ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ倀䀏倀䀏倀䀏堀䀏怀䀌栀栀"
|
// str+="⠀⠀怚⠀栀栀栀 㠀 㠀㠀᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉᠀㘉㠀栀"
|
// str+="栀栀栀翡翡翡翡翡翡翡翡翡翡翡翡翡翡翡翡翡翡"
|
// str+="翡翡翡翡翡翡翡翡栀栀栀倗栀翢翢翢翢翢翢翢翢"
|
// str+="翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢翢栀栀䠀"
|
// str+="ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ倀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ"
|
// str+="䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ䠀ဏ㠀栀⠀怚⠀"
|
// str+="怚⠀怚⠀怚栀栀栀栀瀅栀䠀တ栀栀⠀⠀᠀؋᠀؋栀߽瀂栀栀栀᠀ԋ瀅"
|
// str+="栀ࠋ栀ࠋ栀ࠋ栀瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁瀁"
|
// str+="瀁瀁瀁瀁瀁瀁栀瀁瀁瀁瀁瀁瀁瀁߽瀂瀂瀂瀂瀂瀂瀂瀂"
|
// str+="瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂瀂栀瀂瀂瀂瀂瀂"
|
// str+="瀂瀂؝瀂"
|
var data = A_DATA.split("")
|
console.log(data,data.length)
|
if(data.length != (256 * 2))return
|
var i = 0;
|
var j = 0;
|
while (i < (256 * 2)) {
|
var entry = data[i++] << 16;
|
A[j++] = entry | data[i++];
|
}
|
var offset = ch;
|
var props = A[offset];
|
// console.log(ch)
|
return props;
|
}
|
|
/**
|
* 16进制的字符串表示转成字节数组
|
*
|
* @param hexString 16进制格式的字符串
|
* @return 转换后的字节数组
|
**/
|
export function toByteArray(hexString) {
|
var byteArray=null;
|
hexString=hexString+''
|
if(hexString !=null && hexString !="") {
|
// console.log(hexString)
|
hexString = hexString.replace(/ /g, "");
|
byteArray = new Array(hexString.length/2);
|
var k = 0;
|
for (var i = 0; i < byteArray.length; i++) {//因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先
|
var high = parseInt(hexString.charAt(k), 16) & 0xff;
|
var low = parseInt(hexString.charAt(k + 1), 16) & 0xff;
|
byteArray[i] = high << 4 | low;
|
k += 2;
|
|
}
|
}
|
return byteArray;
|
}
|
|
export function intToRegisters(v) {
|
var registers = new Array();
|
registers[0] = 0xff & (v >> 24);
|
registers[1] = 0xff & (v >> 16);
|
registers[2] = 0xff & (v >> 8);
|
registers[3] = 0xff & v;
|
return registers;
|
}
|
|
/**获取校验码除去包头相加取反*/
|
export function check_string(byt) {
|
|
//字节数组转为16进制字符串/2后的长度
|
var size=BinaryToHexString2(byt).length/2;
|
var hex_=hex(BinaryToHexString2(byt));
|
// console.log(byt)
|
// console.log(hex_,BinaryToHexString2(byt))
|
//求和
|
var sum=0;
|
for(var i=0;i<size;i++) {
|
sum+=parseInt(hex_[i],16);
|
}
|
|
//取反转为16进制字符串
|
var hex16=((~sum) & 0xFFFF).toString(16)
|
|
//字符串的长度
|
var lenth=hex16.length;
|
|
var jiaoyan=hexStringToByteArray(hex16.substring(lenth-4, lenth));
|
return jiaoyan;
|
}
|
|
|
/**将字节数组转换为16进制字符串无空格*/
|
export function BinaryToHexString2(bytes) {
|
var hexStr = "0123456789ABCDEF";
|
var result = "";
|
var hex = "";
|
|
for (var b=0 ;b< bytes.length;b++) {
|
hex = (hexStr.charAt((bytes[b] & 0xF0) >> 4)).valueOf();
|
hex += (hexStr.charAt(bytes[b] & 0x0F)).valueOf();
|
result += hex + "";
|
}
|
return result;
|
}
|
|
/**
|
* 16进制表示的字符串转换为字节数组
|
*
|
* @param hexString 16进制表示的字符串
|
* @return byte[] 字节数组
|
*/
|
export function hexStringToByteArray(hexString) {
|
hexString=hexString+''
|
hexString = hexString.replace(/ /g, "");
|
var len = hexString.length;
|
var bytes = new Array(len / 2);
|
for (var i = 0; i < len; i += 2) {
|
// 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节
|
bytes[i / 2] = (parseInt(hexString.charAt(i), 16) << 4) + parseInt(hexString.charAt(i+1), 16);
|
}
|
return bytes;
|
}
|
|
/**16进制转为10进制*/
|
export function decodeHEX(hexs){
|
// console.log(hexs)
|
hexs='0x'+hexs
|
// console.log(hexs)
|
var bigint=eval(hexs).toString(16);
|
// console.log(bigint)
|
var numb=parseInt(bigint);
|
// console.log(numb)
|
return numb;
|
}
|
|
/**将16进制字符串转为hex字符串数组2个字符串一个*/
|
export function hex(message) {
|
var size=message.length/2;
|
var hex_=new Array(size);
|
for(var i=0;i<size;i++) {
|
hex_[i]=message.substring(i*2, 2+i*2);
|
}
|
return hex_;
|
}
|
|
/**修改某一个标签的相关
|
* @param hz 需要修改的参数
|
* @param tagid 需要修改的标签ID
|
* @param byt 需要修改的地址*/
|
export function write_one_taghz(hz,tagid,byt) {
|
var buf =new Array(14);
|
var buf1 =new Array(10);
|
//包头
|
buf[0]= 0x55;
|
//包头
|
buf[1]= 0xAA;
|
//指令类型
|
buf1[0]=0x08;
|
|
//数据长度
|
buf1[1]=10;
|
|
//ID组数最大为20组
|
buf1[2]= 0x01;
|
//参数地址
|
buf1[3]=byt;
|
|
// buf1[4]=toByteArray((parseInt(tagid)).toString(16))[1];
|
// buf1[5]=toByteArray((parseInt(tagid)).toString(16))[0];
|
// buf1[6]=toByteArray((parseInt(tagid)).toString(16))[1];
|
// buf1[7]=toByteArray((parseInt(tagid)).toString(16))[0];
|
// console.log(toByteArray(tagid)[0])
|
buf1[4]=toByteArray(tagid)[1];
|
buf1[5]=toByteArray(tagid)[0];
|
buf1[6]=toByteArray(tagid)[1];
|
buf1[7]=toByteArray(tagid)[0];
|
|
buf1[8]=intToRegisters(hz)[3];
|
buf1[9]=intToRegisters(hz)[2];
|
for(var z=0;z<buf1.length;z++) {
|
buf[z+2]=buf1[z];
|
}
|
|
//校验码
|
buf[12]=check_string(buf1)[1];
|
buf[13]=check_string(buf1)[0];
|
console.log(buf)
|
return hex(BinaryToHexString2(buf));
|
}
|