2016-11-15 88 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

相關問題