C 프로그래밍 : 16진수 문자열을 바이트열로 변환하는 함수
- 프로그래밍/C 프로그래밍
- 2020. 2. 8.
반응형
본 글에서는 16진수 문자열을 바이트열로 변환하는 함수를 소개한다.
예를 들어, "FE303321" 과 같이 16진수를 표현하는 8바이트 길이의 문자열을 array[4] = { 0xFE, 0x30, 0x33, 0x21 } 과 같은 4바이트 배열로 변환하는 함수이다.
#include <stdint.h>
#include <stdlib.h>
#include <string.>
/**
* 16진수 문자열을 바이트열로 변환한다.
* @param[in] hex_str 16진수 문자열 (예: fe80000000000000024954fffe454b01)
* @param[out] array 변환된 바이트열이 저장될 버퍼
* @return 변환된 바이트열의 길이
*/
size_t ConvertHexStrToArray(const char *hex_str, uint8_t *array)
{
size_t i, array_size = strlen(hex_str) / 2;
char t[3];
for(i = 0; i < array_size; i++) {
memcpy(t, (str + i*2), 2);
t[2] = '\0';
*(array + i) = (uint8_t)strtoul(t, NULL, 16);
}
return array_size;
}
/**
* ConvertHexStrToArray() 함수 테스트 어플리케이션 메인 함수
*/
int main(int argc, char *argv[])
{
char *hex_str = "FE803321";
uint8_t array[4];
size_t array_size = ConvertHexStrToArray(hex_str, array);
printf("Converted : 0x");
for (size_t i = 0; i < array_size; i++) {
printf("%02X", array[i]);
}
printf("\n");
return 0;
}
'프로그래밍 > C 프로그래밍' 카테고리의 다른 글
Object Identifier asn.1 인코딩 방법 (0) | 2021.02.11 |
---|---|
C 프로그래밍 : 두 GPS 좌표간 목적지 방위각(bearing) 계산하기 (0) | 2020.04.29 |
C 프로그래밍 : 두 GPS 좌표간 거리(distance) 구하기 (3) | 2020.04.29 |
C 프로그래밍 : 네트워크 인터페이스 MAC 주소 문자열을 바이트열로 변환 (2) | 2020.02.13 |
C 프로그래밍 : MAC 주소 출력 매크로 - MAC 주소 출력문을 간단하게. (0) | 2020.02.12 |
C 프로그래밍 : 배열 데이터를 16진수 형식으로 출력하기(Hex dump) (0) | 2020.02.09 |
나만의 간단한 로그출력 함수 만들기 (0) | 2019.07.28 |
TAILQ 사용법 (0) | 2016.12.11 |