Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-解析十六进制值_Javascript_Decode_Bitwise Operators - Fatal编程技术网

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();