Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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_Node.js - Fatal编程技术网

Javascript 从文件中读取十六进制数

Javascript 从文件中读取十六进制数,javascript,node.js,Javascript,Node.js,我有一个以十六进制格式表示数据的(.hex)文件。以下是该文件的示例: :100080000C9408010C9408010C9408010C9408010C940801CC :100090000C9408010C9408010C9408010C9408010C9428019C :1000A0000C9408010C9408010C9408010C9408010C940801AC :1000B0000C9408010C9408010C9408010C9408010C9408019C :1000C

我有一个以十六进制格式表示数据的(.hex)文件。以下是该文件的示例:

:100080000C9408010C9408010C9408010C9408010C940801CC :100090000C9408010C9408010C9408010C9408010C9428019C :1000A0000C9408010C9408010C9408010C9408010C940801AC :1000B0000C9408010C9408010C9408010C9408010C9408019C :1000C0000C9408010C9408010C9408010C9408010C9408018C :1000D0000C9408010C9408010C9408010C9408010C9408017C

我编写了下面的nodejs代码来读取文件,并将其转换为缓冲区,最后使用串口发送

var fs = require("fs");

fs.readFile('./code.hex', function(err, code){

    var str = code.toString();
    var line = str.split('\n');

    addr = line[1].slice(1, 9);
    //addr_num = Number(addr, 'hex');

    data = line[1].slice(9, (line[1].length - 3));
    console.log(data);
    var buf = new Buffer(data, 'hex');
}
行中的前8位是地址的一部分,其余部分是数据。我想要的是读取
addr
作为一个数字,使用
if
条件将其与其他变量进行比较。当我尝试时,
addr_num=Number(addr,'hex')结果是
NAN
。有没有办法把它读作一个数字?

使用:

parseInt(addr, 16)
而不是:

Number(addr, 'hex')
解析以基数16(十六进制)为数字的字符串

这两者之间有一些区别,您可以在和上阅读,但本质上
parseInt()
允许您指定基数,而
Number()
不允许

两者都会尝试根据要解析的字符串的格式(如果未指定)猜测基数,因此理论上您也可以这样做:

Number('0x' + addr)

但是,由于从文件中读取的字符串不是这种格式,您必须在其前面缝合
'0x'
,因此您最好只使用
parseInt(addr,16)

parseInt('0x' + addr)