• c语言把16进制文本转16进制数组


    直接上代码

    #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

  • 相关阅读:
    Firebird 用查询结果集更新数据,merge
    wcf 登录认证 angular 认证重定向
    WOSA/XFS PTR Form解析库—xfsptrdata.h
    WOSA/XFS PTR Form解析库—头文件
    2019,开启新征程
    VC中添加头文件以及库
    .net4.0多进程间共享内存实现通信(VB.Net)
    共享内存操作类(C#源码)
    VC++ 共享内存读写操作
    c#实现内存映射文件共享内存
  • 原文地址:https://www.cnblogs.com/chen55555/p/16087452.html
Copyright © 2020-2023  润新知