我正在使用节点js的<{1}}模块编写一个小代码
我的硬件芯片的文档将我的传输数据指定为十六进制数字的字节数组。
但是,我有以十进制表示法存储的值。
使用serialport
以hexa表示法返回,但以字符串格式返回。我需要myDecimalnumber.toString(16)
格式。将结果转换为数字再次使其成为十进制,但不是以十六进制!
我对如何将数据发送到芯片感到困惑。请提出建议!
答案 0 :(得分:2)
数字只是数字,它们没有数字基础。
不,你不是。它可能是十进制表示法的唯一方法是,如果它是一个字符串,但如果但是,我有以十进制表示法存储的值。
myDecimalnumber.toString(16)
给你一个十六进制字符串,那么myDecimalnumber
是一个Number
,而不是一个字符串(或者你有一个自定义String.prototype.toString
方法,但我确定你没有。
使用
myDecimalnumber.toString(16)
以hexa表示法返回,但以字符串格式返回。我需要Number
格式。
数字没有数字基础的概念。这是与数字的表示相关的概念。也就是说,10
十进制是12
八进制是A
十六进制。他们都是相同的号码。它只是他们的代表(例如,我们如何写下来,它的字符串形式)涉及多个基础。
我的硬件芯片的文档将我的传输数据指定为十六进制数字的字节数组。
这似乎不太可能。如果是这样的话,它是由一名超级初级工程师编写的,或者是从另一种语言中翻译过来的。
芯片可能需要一个整数数组(数字),但是你需要参考文档来查看integeres的大小(8位,16位,32位,64位,等等。)。但可能需要一个字符数组,数据编码为十六进制。在这种情况下,您需要知道它需要多少位数(可能值为2,4等)。
但是,从根本上说,数字基数只与数字的表示(我们将它们写下来的方式,或者将它们保存在字符串中)有关,而不是实际的数字。数字只是数字,它们没有数字基础。