7

私はArduinoをプログラミングしており、「自分のやり方で」16進形式でバイトしようとしていSerial.print()ます(詳細については読み続けてください)。

つまり、次のコードを使用して

byte byte1 = 0xA2;
byte byte2 = 0x05;
byte byte3 = 0x00;

Serial.println(byte1, HEX);
Serial.println(byte2, HEX);
Serial.println(byte3, HEX);

シリアル モニターに次の出力が表示されます。

A2
5
0

ただし、次のように出力したいと思います。

A2
05
00

0つまり、 s (05代わりに0andの00代わりに)を含む「完全な」16 進数値を出力したいと思います0

どうすればそれを作ることができますか?

4

6 に答える 6

0

これを試して:

//Converts the upper nibble of a binary value to a hexadecimal ASCII byte.
//For example, btohexa_high(0xAE) will return 'A'.
unsigned char btohexa_high(unsigned char b)
{
    b >>= 4;
    return (b>0x9u) ? b+'A'-10:b+'0';
}


//Converts the lower nibble of a binary value to a hexadecimal ASCII byte.
//  For example, btohexa_low(0xAE) will return 'E'.


unsigned char btohexa_low(unsigned char b)
{
    b &= 0x0F;
    return (b>9u) ? b+'A'-10:b+'0';
}

そしてメインコードでは:

comand_mod=0xA1; //example variable
Serial.print(btohexa_high(comand_mod));
Serial.print(btohexa_low(comand_mod));
于 2013-10-02T03:20:17.650 に答える