2016-11-15 60 views
0

我想通过串口从Arduino的ADC发送讲座,但是我想仅使用两个字节以二进制形式发送它们。如何将十六进制转换为基本10字节

从ADC转换我得到两个字节ADCH和ADCL中的10位,假设这些字节分别是0x03(HI字节)和0xFF(LO字节)或作为一个Int数1023(十进制),那就是我想要发送的值,换句话说,分别发送两个字节的“十进制”值0x10和0x23。 任何想法如何做到这一点? 谢谢

+0

不明确。以ACDH/L接收时,'1023'的格式是什么?什么是“基地10字节”?以什么格式发送'10'和'23'值?二进制? BCD?没有足够的指定。 – EJP

+3

字节是字节。如果它是一个字节,arduino和PC都不知道其中是否有十进制或十六进制数字。它是它的字节形式。所以把它写入串口。然后,PC也必须知道如何解释字节(例如,如果有2个或4个字节传入,无论是大的还是小的endian,有符号的还是无符号的......) – Matthias247

+0

不能相信你真的想要这样一个无意义的数据转换。为什么不直接发送它(要么是{0xff,0x03}或要么是{0x03,0xff}') – datafiddler

回答

1

通常的方法是将十六进制转换为数字,然后将数字转换为十进制。最后,从十进制表示中取出一对数字,并将它们转换为BCD(二进制编码的十进制),其中每个半字节(4位)包含从0到9的值以表示一个数字。

+1

BCD在哪里进入? – EJP

+1

我读到了他的想法,即每个字节代表两个十进制数字,基本上是BCD。重读,我仍然这是他可能想要的,但不是绝对肯定的。 –

+0

@EJP:杰瑞创造性的猜测。对于鲍里斯的要求,还有什么意义(莫名其妙)。 ? – datafiddler

相关问题