[아두이노(Arduino)] hex(byte array) print api example

Posted by [하늘이]
2020. 2. 4. 11:26 IT/C, C++
반응형

[아두이노(Arduino)] hex(byte array) print api


아두이노 print api를 사용하는 경우 hex를 표시하기 위하여 아래 기본 api를 사용하면 아래와 같은 것을 사용합니다.

Basic API


1
2
3
4
5
6
// encode된 데이터 바이트 값 출력.
for (int i = 0; i < encodeSize; i++) {
    Serial.print(buffer[i], 16);
    Serial.print(" ");
}
Serial.println("");
cs


하지만 이녀석은 0x01 의 값을 1로만 출력합니다.

EX) byte aaa[3] = {0x11, 0x22, 0x01};

     을 출력하는 경우 -> 11 22 1

출력된 array Hex string을 그래도 특정 covert web site에 넣고 싶을 때 수작업이 필요합니다.



하여 아래의 api를 사용하였습니다.

이렇게하면 아래와 같이 출력됨.

EX) byte aaa[3] = {0x11, 0x22, 0x01};

     을 출력하는 경우 -> 11 22 01

Custom API


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "Arduino.h"
 
char *hexChar(char *destBuf, unsigned char srcData);
 
constexpr char hexmap[] = {'0''1''2''3''4''5''6''7',
                           '8''9''A''B''C''D''E''F'};
 
void printHex(unsigned char * data, int len){
    char tempByte[3= {0,0,0};
 
    for (int i = 0; i < len; i++) {
//        Serial.print(tempByte);
        Serial.print((char*)hexChar(tempByte, data[i]));
        Serial.print(" ");
    }
    Serial.println("");
}
 
char *hexChar(char *destBuf, unsigned char srcData){
    destBuf[0= hexmap[(srcData & 0xF0>> 4];
    destBuf[1= hexmap[srcData & 0x0F];
 
    return destBuf;
}
cs


사용방법


1
2
3
4
5
6
void loop()
{
    byte aaa[4] = {0x11, 0xF0, 0xAA, 0x33};
    printHex(aaa, 4);
}
 
cs



반응형