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

posted @   平平无奇小辣鸡  阅读(367)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示