我想通过串口从Arduino的ADC发送讲座,但是我想仅使用两个字节以二进制形式发送它们。如何将十六进制转换为基本10字节
从ADC转换我得到两个字节ADCH和ADCL中的10位,假设这些字节分别是0x03(HI字节)和0xFF(LO字节)或作为一个Int数1023(十进制),那就是我想要发送的值,换句话说,分别发送两个字节的“十进制”值0x10和0x23。 任何想法如何做到这一点? 谢谢
我想通过串口从Arduino的ADC发送讲座,但是我想仅使用两个字节以二进制形式发送它们。如何将十六进制转换为基本10字节
从ADC转换我得到两个字节ADCH和ADCL中的10位,假设这些字节分别是0x03(HI字节)和0xFF(LO字节)或作为一个Int数1023(十进制),那就是我想要发送的值,换句话说,分别发送两个字节的“十进制”值0x10和0x23。 任何想法如何做到这一点? 谢谢
通常的方法是将十六进制转换为数字,然后将数字转换为十进制。最后,从十进制表示中取出一对数字,并将它们转换为BCD(二进制编码的十进制),其中每个半字节(4位)包含从0到9的值以表示一个数字。
BCD在哪里进入? – EJP
我读到了他的想法,即每个字节代表两个十进制数字,基本上是BCD。重读,我仍然这是他可能想要的,但不是绝对肯定的。 –
@EJP:杰瑞创造性的猜测。对于鲍里斯的要求,还有什么意义(莫名其妙)。 ? – datafiddler
不明确。以ACDH/L接收时,'1023'的格式是什么?什么是“基地10字节”?以什么格式发送'10'和'23'值?二进制? BCD?没有足够的指定。 – EJP
字节是字节。如果它是一个字节,arduino和PC都不知道其中是否有十进制或十六进制数字。它是它的字节形式。所以把它写入串口。然后,PC也必须知道如何解释字节(例如,如果有2个或4个字节传入,无论是大的还是小的endian,有符号的还是无符号的......) – Matthias247
不能相信你真的想要这样一个无意义的数据转换。为什么不直接发送它(要么是{0xff,0x03}或要么是{0x03,0xff}') – datafiddler