hex2asc 함수를 만들어 보자.
asc2hex
conv_hex2asc(char* dst, char* src, int len);
// 길이가 더 커야함, 널포인터 체크
conv_asc2hex(char* dst, char* src, int len);
#include <stdio.h>
#include "util.h"
char asc1[32]="1234ABCD";
uint8_t bin1[32]= "";
conv_asc2bin(bin1, asc1, strlen(src1));
printf("ascii data is %s", asc1); // 1234ABCD
printf("binary data is %d", bin1); // 12 34 AB CD = 18 52 171 205, 이 함수는 만들어야 할듯
char asc2[32]= {0, };
char bin2[32]= {1, 2, 0xAB, 0xFF};
conv_bin2asc(asc2, bin2, strlen(asc2));
printf("binary data is %d", bin2); // 1, 2, AB, FF
printf("ascii data is %s", asc2); // 01 02 AB FF = 1 2 171 255
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
#include "util.h"
int main() {
// ascii data= 1234ABFF = 31 32 33 34 41 42 46 46
// binary data= 12, 34, AB, FF = 18, 52, 171, 255
char asc_data1[32] = "1234ABFF";
uint8_t bin_data1[32] = { 0, };// bin 데이터의 사이즈는 asc 사이즈의 절반이면 된다.
// 예를 들어 asc 1234ABFF의 사이즈는 8이므로 8/2=4와 같이 계산하면 되는데.. 계산하기 번거롭다면 asc 길이 그대로 넣어도 된다.
uint8_t bin_len1 = 0; // 바뀐 bin 데이터의 길이가 나온다. 크게 필요하진 않은데 con_bin2asc와의 통일성을 위해 만들었다.
bin_len1= conv_asc2bin(bin_data1, asc_data1, (uint8_t)(strlen(asc_data1)));
printf("asc data is \\"%s\\"(%d)\\r\\n", asc_data1, (int)(strlen(asc_data1)));
printf("bin data is "); print_bin_data(bin_data1, bin_len1, RADIX_HEX);
printf("bin data is "); print_bin_data(bin_data1, bin_len1, RADIX_DEC);
printf("------------------------------\\r\\n");
// binary data= 1, 2, 0xAB, 0xFF
// ascii data= 0102ABFF or 01 02 AB FF
uint8_t bin_data2[4] = {1, 2, 0xAB, 0xFF};
#define ASC_DATA2_LEN (4*3+1) // AB_ 3글자 x 배열 요소 갯수 + 1 (=널문자)
printf("bin data is "); print_bin_data(bin_data2, 4, RADIX_HEX); // 01 02 AB FF
printf("bin data is "); print_bin_data(bin_data2, 4, RADIX_DEC); // 1 2 171 255
char asc_data2[ASC_DATA2_LEN] = {0, };
uint8_t converted_asc_len = 0;
converted_asc_len = conv_bin2asc(asc_data2, bin_data2, 4, false); // false -> 0102ABFF
printf("asc data is %s(%d)\\r\\n", asc_data2, converted_asc_len);
char asc_data3[20] = {0, };
converted_asc_len = conv_bin2asc(asc_data3, bin_data2, 4, true); // true -> 01 02 AB FF
printf("asc data is %s(%d)", asc_data3, converted_asc_len);
return 0;
}
‣