当前位置: 首页 > 知识库问答 >
问题:

如何在C中将原始的64字节二进制文件转换为十六进制或ASCII

金英华
2023-03-14

我在C中使用SHA512来获取散列值。我是这样做的:

#include <stdlib.h>
#include <stdio.h>
#include <openssl/sha.h>

int main(int argc, char *argv[]){

    unsigned char hash[SHA512_DIGEST_LENGTH];

    char data[] = "data to hash";          //Test Data
    SHA512(data, sizeof(data) - 1, hash);  //Kill termination character
    //Now there is the 64byte binary in hash

我试图通过以下方式将其转换为十六进制:

long int binaryval, hexadecimalval = 0, i = 1, remainder;

binaryval=(long int)hash;
        while (binaryval != 0)
        {
            remainder = binaryval % 10;
            hexadecimalval = hexadecimalval + remainder * i;
            i = i * 2;
            binaryval = binaryval / 10;
        }
        printf("Outpunt in Hex is: %lX \n", hexadecimalval);


        printf("%d\n",(long int) awhash );
        return 0;
    }

但这不是我想要的。

如何将无符号字符中的二进制文件转换为人类可读的格式?打印字符[]的最佳案例。

“数据哈希”的哈希应该是:

D98F945FEE6C9055592FA8F398953B3B7CF33A47CFC50667CBCA1ADB344FF18A4F442758810186FB480DA89BC9DFA3328093DB34BD9E4C394AEC083E1773A

共有1个答案

柳墨一
2023-03-14

只需在printf()中使用%x打印每个字符。不转换,只使用原始数据

int main(int argc, char *argv[]){

  unsigned char hash[SHA512_DIGEST_LENGTH];

  char data[] = "data to hash";          //Test Data
  SHA512(data, sizeof(data) - 1, hash);  //Kill termination character

  //Now there is the 64byte binary in hash
  for(int i=0; i<64; i++)
  {
    printf("%02x", hash[i]);
  }
  printf("\n");
}

编辑为仅输出十六进制值,无逗号或空格。

 类似资料:
  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只

  • 本文向大家介绍如何将十进制转换为十六进制?,包括了如何将十进制转换为十六进制?的使用技巧和注意事项,需要的朋友参考一下 十进制是公众最熟悉的数字系统。它是基数10,只有10个符号-0、1、2、3、4、5、6、7、8和9。而十六进制是计算机或数字系统中最常见的数字系统颜色表示。它是基数16,只有16个符号:0、1、2、3、4、5、6、7、8、9和A,B,C,D,E,F。这些A,B,C,D ,E,F分

  • 问题内容: 如何在JavaScript中将十进制值转换为等效的十六进制值? 问题答案: 使用以下命令将数字转换为十六进制字符串: 并通过以下步骤逆向处理:

  • 问题内容: 我有一些Perl代码,其中hex()函数将十六进制数据转换为十进制。如何在Python上执行此操作? 问题答案: 如果用“十六进制数据”表示字符串形式 您可以使用 将其转换为整数并 将其转换为十进制字符串。

  • 问题内容: 我在ex中有整数。16,我正在尝试将此数字转换为十六进制数字。我试图通过使用十六进制函数来实现此目的,但是每当您向十六进制函数提供整数时,它都会返回十六进制数字的字符串表示形式, 有人可以告诉我如何将字符串格式的十六进制数字转换为简单的十六进制数字。 谢谢!! 问题答案:

  • 我想知道如何将舞蹈方法的十进制结果包含到灯光方法中。例如,在这个程序中,如果我输入5F,十进制结果将是95。我希望95在light方法中显示为静态int变量,以便转换为二进制数。如果你能告诉我如何将十六进制数限制在2位数以内,那也会很有帮助。感谢阅读! } }