c++ - कैसे `सीरियल.प्रिंट()` 'पूर्ण "हेक्साडेसिमल बाइट्स?




hex arduino (3)

मैं प्रोग्रामिंग कर रहा हूँ Arduino और मैं Serial.print() करने की कोशिश कर रहा हूँ। Serial.print() हेक्साडेसिमल प्रारूप " Serial.print() रास्ता" में बाइट्स 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 एस ( 05 बजाय 0 और 00 बजाय 00 )।

मैं यह कैसे कर सकता हूं?


इसे इस्तेमाल करे:

//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));

सरल जानवर बल विधि, के रूप में एक नियमित रूप से लिखना है:

void p(char X) {

   if (X < 16) {Serial.print("0");}

   Serial.println(X, HEX);

}

और मुख्य कोड में:

p(byte1);  // etc.

बफर में प्रिंट करने के लिए स्प्रंटफ़ का उपयोग करें (दो बाइट प्रति बाइट + नल टर्मिनेटर):

byte byte1 = 0xA2;
byte byte2 = 0x05;
byte byte3 = 0x00;
char s[7];
sprintf(s, "%02x\n%02x\n%02x", byte1, byte2, byte3);
Serial.println(s);

नई लाइन पर प्रत्येक को प्राप्त करने के बीच में नई लाइनें जोड़े '% 02x' के बारे में,% का अर्थ है कि स्वरूपण की जानकारी है, 0 से 0 के साथ पैड के लिए 0 का मतलब है, 2 का अर्थ है पैड इनपुट 2 वर्णों तक और x का अर्थ है मुझे हेक्साडेसिमल जैसा दें।

अन्य फ़ॉर्मेटिंग विकल्पों के लिए http://linux.die.net/man/3/sprintf देखें





println