Javascript 从文件中读取十六进制数
我有一个以十六进制格式表示数据的(.hex)文件。以下是该文件的示例: :100080000C9408010C9408010C9408010C9408010C940801CC :100090000C9408010C9408010C9408010C9408010C9428019C :1000A0000C9408010C9408010C9408010C9408010C940801AC :1000B0000C9408010C9408010C9408010C9408010C9408019C :1000C0000C9408010C9408010C9408010C9408010C9408018C :1000D0000C9408010C9408010C9408010C9408010C9408017C 我编写了下面的nodejs代码来读取文件,并将其转换为缓冲区,最后使用串口发送Javascript 从文件中读取十六进制数,javascript,node.js,Javascript,Node.js,我有一个以十六进制格式表示数据的(.hex)文件。以下是该文件的示例: :100080000C9408010C9408010C9408010C9408010C940801CC :100090000C9408010C9408010C9408010C9408010C9428019C :1000A0000C9408010C9408010C9408010C9408010C940801AC :1000B0000C9408010C9408010C9408010C9408010C9408019C :1000C
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)