반응형
말 그대로 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 |