且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

查找字符串数组中16进制数,并转换【原创】

更新时间:2022-08-22 11:26:33

查找字符串数组中16进制数,并转换

查找字符串数组中16进制数,并转换【原创】

#include <stdio.h> #include <stdlib.h> #include <string.h> void string_to_hex(unsigned char* input, int input_len, unsigned char* output, int output_len) { unsigned char tmp; int i; if (input_len > output_len*2) return; for (i = 0; i < input_len; i += 2){ tmp = input[i]; if (tmp > '9'){ tmp = (unsigned char)toupper((int)tmp) - 'A' + 0x0A; } else { tmp &= 0x0F; } output[i/2] = (tmp << 4); tmp = input[i+1]; if (tmp > '9'){ tmp = (unsigned char)toupper((int)tmp) - 'A' + 0x0A; } else { tmp &= 0x0F; } output[i/2] |= tmp; } } #define GTP_CONFIG_MAX_LENGTH 240 int main(void) { char *fw_image = "0xfd,120x03fg 0x44 ,,0x56dff g0x23,,a0x34"; int size = 0; int i = 0; char temp_data[GTP_CONFIG_MAX_LENGTH] = { 0 }; char *endp = NULL; int find_data = 0; int j = 0; memset(temp_data, 0, strlen(temp_data)); j = 0; size = strlen(fw_image); printf("size=%d \r\n", size); for (i = 0; i < size; i++) { if (fw_image[i] == '0' && find_data == 0) { find_data = 1; printf("[%d]%c find_data == 0 no\r\n", i, fw_image[i]); continue; } if ((fw_image[i] == 'x' || fw_image[i] == 'X') && find_data == 1) { find_data = 2; printf("[%d]%c find_data == 1 no\r\n", i, fw_image[i]); } else if (find_data == 2) { printf("[%d]%c find_data == 2\r\n", i, fw_image[i]); printf("[%d]%c find_data == 2\r\n", i, fw_image[i-2]); //temp_data[j] = strtoul(&fw_image[i-2], NULL, 16); string_to_hex(&fw_image[i], 2, &temp_data[j], 2); printf("temp_data[%d]=0x%02x yes\r\n", j, temp_data[j]); find_data = 0; j++; } else { find_data = 0; printf("[%d]%c find_data == 0 no\r\n", i, fw_image[i]); } } printf("j=%d \r\n", j); for (i = 0; i < j; i++) { printf("[%d]%02x ", i, temp_data[i] & 0xff); if (i % 10 == 9) printf("\n"); } #if 0 // string_to_hex(buf, 5, tmp, 5); tmp[0] = strtoul(buf, &endp, 16); tmp[1] = strtoul(&buf[5], &endp, 16); tmp[2] = strtoul(&buf[11], &endp, 16); for (i=0; i<5; i++) printf("tmp[%d]=%02x ", i, tmp[i]); #endif printf("\n"); return 0; }
查找字符串数组中16进制数,并转换【原创】

 






本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/7411187.html,如需转载请自行联系原作者