消息关闭
    暂无新消息!

请大家帮个忙,先谢谢了!!!

问题作者 : Hefferan2017-07-04发布
我用Android  NDK调了一个md5,输出LOG没问题,请问问怎么拼接成字符串返回?我不会C!!!大家帮帮忙,谢谢了
 char szDigest[16];
    unsigned char encrypt[32];
//    gets(s2);

    MD5Digest(ap,strlen(ap),szDigest);//这个是网上找的MD5

    char *s3 = (char *)malloc(sizeof(char) * (sizeof(szDigest) + 1));
    strncpy(s3, szDigest, sizeof(szDigest));
    int j;
    for (int j = 0; j<16; j++) {
        LOGI("%02X",(unsigned char) szDigest[j]);
//        encrypt[j] = (unsigned char) szDigest[j];
    }
    return (*env)->NewString(env, s3,strlen(s3));
//    return (*env)->NewStringUTF(env, s3);
}

4个回答

︿ 2
  char szDigest[16];
        unsigned char encrypt[50];
        MD5Digest(s2,strlen(s2),szDigest);
//    char *format = "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X";
        int j;
        for (int j = 0; j<16; j++) {
            LOGI("MD5的值:%02X",(unsigned char) szDigest[j]);
        }
//        sprintf(encrypt, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", (unsigned char) szDigest[0],(unsigned char) szDigest[1],(unsigned char) szDigest[2],
//                (unsigned char) szDigest[3],(unsigned char) szDigest[4],(unsigned char) szDigest[5],(unsigned char) szDigest[6]
//                ,(unsigned char) szDigest[7],(unsigned char) szDigest[8],(unsigned char) szDigest[9],(unsigned char) szDigest[10]
//                ,(unsigned char) szDigest[11],(unsigned char) szDigest[12],(unsigned char) szDigest[13],(unsigned char) szDigest[14]
//                ,(unsigned char) szDigest[15]);
//    return (*env)->NewString(env, s3,strlen(s3));
        char *s3 = encrypt;
        memcpy(s3, szDigest, strlen(szDigest));
        return (*env)->NewStringUTF(env, s3);


是这样吗?输出是乱码 用sprintf可以...但是不好看   可能我的问题不清楚,我的意思是把char szDigest[16]这个里面保存的是MD5,返回给调用者.
︿ 0
使用memcpy(void *dest, const void *src, size_t n);
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中