Javascript-解析十六进制值
我试图解析一个十六进制值来解码一张卡 我从卡接收的十六进制数据是Javascript-解析十六进制值,javascript,decode,bitwise-operators,Javascript,Decode,Bitwise Operators,我试图解析一个十六进制值来解码一张卡 我从卡接收的十六进制数据是f8b2d501f8ff12e0056281ed55 首先,我使用parseInt()将其转换为整数 收到的值为1.97039330145800871E+31 当我尝试在Javascript中使用按位运算符解码时 var cardNumber = ((parseData & 0xFFFFF) >> 1).toString(); 我收到一个0值 我在这里做错了什么,我怎么能解析这么大的整数的值呢?既然整数
f8b2d501f8ff12e0056281ed55
首先,我使用parseInt()将其转换为整数
收到的值为1.97039330145800871E+31
当我尝试在Javascript中使用按位运算符解码时
var cardNumber = ((parseData & 0xFFFFF) >> 1).toString();
我收到一个0
值
我在这里做错了什么,我怎么能解析这么大的整数的值呢?既然整数太大了,你应该为js使用任何bigNum库
我建议您,因为您只使用整数,并且它支持按位操作,但是您也可以检查答案以获得更多选项。有两种方法可以做到这一点: 首先,请注意代码中的
&0xFFFFF
操作只相当于获取字符串的子字符串(最后5个字符)
因此,您只需从数字的末尾执行一个子字符串,然后执行其余操作:
var数据='b543e1987aac6762fcaadd';
var substring=data.substr(-5);
var parseData=parseInt(子字符串,16);
var cardNumber=((parseData&0xFFFFF)>>1.toString();
文件。书写(卡号)代码>您的数字太大,以至于它被转换为浮点数,并且最右边的数字丢失,即设置为0。但是如果你只对最右边的5位数字感兴趣,你可以简单地从你原来的十六进制数中取一个子串。十六进制代表什么,。?如果你说这是一个数字,那就等于一个104位的数字,所以我想它不是。您是否有该卡十六进制数据所代表的文件格式。为什么编辑您的问题?f9030xx22
中的xx不是有效的十六进制字符。@Zuif,请不要对您的问题进行重大更改,如果您有新的问题,请与之相关。此外,您编辑的代码没有任何意义,parseInt('f903022',1)代码>不返回NaN而不是1.9…e31。@zuif,我更改了。您还应该编辑您的问题并更改parseInt('f903022',1)代码>到parseInt('f903022',16)代码>。
var cardNumber = ((parseData & 0xFFFFF) >> 1).toString();