从文件中读取十六进制数
Read hex number from file
我有一个以十六进制格式表示数据的(.hex)文件。以下是文件的示例:
: 100080000 c9408010c9408010c9408010c940801cc: 100090000 c9408010c9408010c9408010c9428019c: 1000 a0000c9408010c9408010c9408010c940801ac: 1000 b0000c9408010c9408010c9408010c9408019c: 1000 c0000c9408010c9408010c9408010c9408018c: 1000 d0000c9408010c9408010c9408010c9408017c
我编写以下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)
或
parseInt('0x' + addr)
但是因为你从文件中读取的字符串不是这种格式,你必须在它前面缝合'0x'
,你可能最好只使用parseInt(addr, 16)
。
相关文章:
- 文本框应该只允许十六进制值
- 正在将unicode转换为十六进制
- 将十六进制字符串转换为字节数组
- JavaScriptforeach循环遍历一个十六进制值数组,使用setTimeout循环遍历背景颜色
- javascript中字节数组到十六进制字符串的转换
- 使用bitcoinjs-min.js从字节数组转换为十六进制格式
- 如何将缓冲区数组转换为十六进制
- 将表示为字符串的十进制数转换为十六进制格式,仍然表示为字符串
- 将数组十六进制颜色转换为数组rgb颜色
- 如何从十六进制字符串构建二进制数组
- 如何改变四个十六进制数浮动在js
- 将十六进制字符串转换为javascript中的整数数组
- 如何将十六进制数压缩成短字符串
- 用大十六进制数转换为二进制的Javascript破解
- 为什么PHP和JavaScript在处理八进制和十六进制数时有问题?
- 从文件中读取十六进制数
- 将24位十六进制数转换为十进制,加1,然后再转换回来
- 套接字获取文本字符串作为十六进制数组,多个套接字相互调用's事件
- Javascript 数组 - 如何选择一个随机十六进制值
- 将十六进制值的数组相加