我想将i2c设备的地址保存到JSON文件中,但是我不知道如何解析以十六进制表示形式返回的字符串。
const dev_address = this.parameters['DEVICE_ADDR']; // 0x04
首先我尝试了.parseInt(this.parameters['DEVICE_ADDR'], 16)
,然后我认为这些地址可能是某种byte[]
,并使用buffer.from(str)
和.toString('hex')
尝试了多种方法,但均未成功。
这是怎么做的?
参考
'use strict';
const logger = require('../controller/LogController');
const i2c = require('i2c-bus');
class ArduinoPlug_on {
constructor(parameters) {
this.parameters = parameters;
}
run(env) {
logger.debug('try connection', this.parameters);
const dev_address = this.parameters['DEVICE_ADDR']; // 0x04
const opt_address = this.parameters['OPTION_ADDR']; // 0x00
const i2c1 = i2c.openSync(1);
const bytesWritten = i2c1.i2cWriteSync(dev_address, 2, Buffer.from([opt_address,0x01]));
if( bytesWritten == 0 ) {
logger.error("could not write data", err);
}
i2c1.closeSync();
}
release(env) {
}
}
module.exports = ArduinoPlug_on;
答案 0 :(得分:1)
我认为您正在寻找这样的东西:
// Convert a string with hex notation to number
var somestring = "0xFF";
var n = parseInt(somestring);
console.log(n); // 255
// Convert a number to string with hex notation
var somenumber = 0xff;
var s = somenumber.toString(16);
console.log("0x" + s); // 0xff
答案 1 :(得分:1)
从包含十六进制数字的字符串转换为十进制然后返回:
let num = "0xff";
console.log(Number(num)); // to decimal
console.log(`0x${Number(num).toString(16)}`); // to hex notation string