本文共 1115 字,大约阅读时间需要 3 分钟。
#include#include #include void hex_str_to_byte(char *in, int len, unsigned char *out){ char *str = (char *)malloc(len); memset(str, 0, len); memcpy(str, in, len); for (int i = 0; i < len; i += 2) { //小写转大写 if (str[i] >= 'a' && str[i] <= 'f') str[i] = str[i] - 0x20; if (str[i + 1] >= 'a' && str[i] <= 'f') str[i + 1] = str[i + 1] - 0x20; //处理第前4位 if (str[i] >= 'A' && str[i] <= 'F') out[i / 2] = (str[i] - 'A' + 10) << 4; else out[i / 2] = (str[i] & ~0x30) << 4; //处理后4位, 并组合起来 if (str[i + 1] >= 'A' && str[i + 1] <= 'F') out[i / 2] |= (str[i + 1] - 'A' + 10); else out[i / 2] |= (str[i + 1] & ~0x30); } free(str);}int main(){ char *str = "FF32333435363738393a3b3c3d3e3f40"; unsigned char temp[16] = { 0}; hex_str_to_byte(str, strlen("ff32333435363738393a3b3c3d3e3f40"), temp); for (int i = 0; i < 16; i++) { printf("%02x ", temp[i]); } printf("\n"); return 0;}
转载地址:http://rqowi.baihongyu.com/