본문 바로가기
Study/Arduino

hex string to byte array

by Answer Choi 2016. 6. 1.
반응형

말 그대로 HEX형식의  String을 Byte 타입으로 바꾸는 방법입니다.


예를들면 아래 형식의 String이 있습니다.


1
5C:CF:7F:00:67:2D
cs


위와 같은 형식의 String 값을 byte array로 바꾸는 방법입니다.


1
2
3
4
5
6
7
8
9
10
11
Serial1.println(macaddr);     
for(int i=0;i<6;i++){
    String temp;
       for(int j=0;j<2;j++){
        temp+=macaddr[(2*i)+j+i];
    }
    const char *tt=temp.c_str();
    Serial1.println(temp);
    mac[i]=strtol(tt,NULL,16);
    Serial1.println(mac[i]);
}
cs


실행을 하면 아래와 같이 출력이 됩니다.



Line 1: 먼저 String 타입의 Mac address를 뿌려줍니다.


Line 2~6 : 각 Mac address Hex값을 temp라는 String으로 저장합니다.


Line 7 : 각 Mac string 값을 char타입의 포인터로 저장합니다.


Line 9 : char타입의 포인터를 byte 타입으로 변환합니다.


Line 7 : String.c_str()은 String을 char pointer로 복사합니다.


Line 9: strtol()은 정수 문자열을 선택한 진수로 변환합니다. 3번째 매개변수가 진수입니다.


16진수로 선택하여서 16진수 변수로 변환합니다.


주의 할점은 첫번째 매개변수에 pointer가 아닌 배열을 적게되면 첫번째 문자열만 변환합니다.



1
2
3
4
5
6
7
8
9
10
11
12
Serial1.println(macaddr);     
String tempmac[6];
for(int i=0;i<6;i++){
    char t[2];
    for(int j=0;j<2;j++){
        temp+=macaddr[(2*i)+j+i];
    }
    t=temp;
    Serial1.println(temp);
    mac[i]=strtoul(t,NULL,16);
    Serial1.println(mac[i]);
}
cs


위와 같이 pointer가 아닌 배열을 사용하면



이런식으로 첫번째 배열의 문자열만 변환시킵니다.





반응형

'Study > Arduino' 카테고리의 다른 글

플래쉬 다운로딩이 안될때  (0) 2016.08.30
자주쓰이는 체터링방지 버튼(Button) 코딩법  (1) 2016.06.13
아두이노 부트로더 구조  (0) 2015.12.14
Intel Edison 초기설정하기  (0) 2015.11.23
arduino uno  (0) 2015.03.26

인기글