首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

Linux C 怎么把unsigned char 转换成char

2013-04-02 
Linux C 如何把unsigned char 转换成char程序如下:#include stdio.h#include openssl/evp.h#include

Linux C 如何把unsigned char 转换成char

程序如下:
#include <stdio.h>
#include <openssl/evp.h>
#include <stdlib.h>Linux C 怎么把unsigned char 转换成char
#include <string.h>
#include <time.h>

 main(int argc, char *argv[])
{
   EVP_MD_CTX *mdctx;
   const EVP_MD *md;
   //char mess1[] = "1375844009\n";

   unsigned char md_value[EVP_MAX_MD_SIZE];
   int md_len, i;
   int num;
   int flag;
   unsigned char mess1[65536];
   char d1[65536];
   char dgst[]={'c','f','4'};
   srand((int) time(0));
   num=rand();
   printf("test0 num is '%d'\n",num);
   sprintf(mess1,"%d",num);
   printf("test0 mess1 is '%s'\n",mess1);

   OpenSSL_add_all_digests();
      if(!argv[1]) {
      printf("Usage: mdtest digestname\n");
      exit(1);
      }//end if
      md = EVP_get_digestbyname(argv[1]);

      if(!md) {
        printf("Unknown message digest %s\n", argv[1]);
        exit(1);
      }//end if

    mdctx = EVP_MD_CTX_create();
    EVP_DigestInit_ex(mdctx, md, NULL);
    EVP_DigestUpdate(mdctx, mess1, strlen(mess1));
    EVP_DigestFinal_ex(mdctx, md_value, &md_len);
    EVP_MD_CTX_destroy(mdctx);
    printf("Digest is: ");
    for(i = 0; i < md_len; i++){
       printf("%02x", md_value[i]);
    }
    printf("\n");    
sprintf(d1,"%d",md_value);   
    flag=strncmp(dgst,md_value[0],3); 
 }//end main

[解决办法]


unsigned char uc = 0;
char c = (char)uc;

[解决办法]
感觉你不只是要比较前24位,应该是把dgst转换为2进制形式,(或者把md_value按位转换为char型)进行比较
[解决办法]
flag=strncmp(dgst,md_value[0],3); 
===>
flag=strncmp((char*)dgst,(char*)&md_value[0],3); 

flag=strncmp((char*)dgst,(char*)md_value,3); 

热点排行