c语言把16进制文本转16进制数组
直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | #include<stdio.h> #include<stdlib.h> #include<string.h> void str2hex(unsigned char * value, int len,unsigned char * out); int main(){ unsigned char *str = "81709944E0CB2E1DB5B0A477D18539B" ; unsigned char out[16]; str2hex(str,32,out); int i; /* for ( i = 0; i < 32; i++) { printf("%02x ",str[i]); } printf("\n"); */ for ( i = 0; i < 16; i++) { printf ( "%02x " ,out[i]); } printf ( "\n" ); } void str2hex(unsigned char * value, int len,unsigned char * out){ int i; int j = 0; unsigned int HIGH_BYTE; unsigned int LOW_BYTE; for ( i = 0; i < len; i+=2) { //high 4 if (value[i]>=0x30 && value[i]<=0x39){ //printf("high1 = %d \n",value[i]-0x30); //printf("%d \n",value[i]-0x30); HIGH_BYTE = value[i]-0x30; } else if (value[i]>=0x41 && value[i]<=0x46) { //printf("high2 = %d \n",value[i]); // printf("%d ",value[i]-0x37); HIGH_BYTE = value[i]-0x37; } else if (value[i]>=0x61 && value[i]<=0x66) { //printf("high3 = %d \n",value[i]); // printf("%d ",value[i]-0x57); HIGH_BYTE = value[i]-0x57; } //low 4 if (value[i+1]>=0x30 && value[i+1]<=0x39){ // printf("%d \n",value[i+1]-0x30); LOW_BYTE = value[i+1]-0x30; } else if (value[i+1]>=0x41 && value[i+1]<=0x46) { // printf("%d ",value[i+1]-0x37); LOW_BYTE = value[i+1]-0x37; } else if (value[i+1]>=0x61 && value[i+1]<=0x66) { // printf("%d ",value[i+1]-0x57); LOW_BYTE = value[i+1]-0x57; } out[j] = (HIGH_BYTE<<4) + LOW_BYTE; j++; } } |
运行结果
运行平台 https://c.runoob.com/compile/11/
转载地址https://blog.51cto.com/u_15361941/3835298
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)