gpt4 book ai didi

c - 从文本文件中读取十六进制

转载 作者:太空宇宙 更新时间:2023-11-04 03:46:05 25 4
gpt4 key购买 nike

我是 C 的新手,想问一下我已经纠结了一段时间的以下问题。 :( 请帮忙!

我想读取一个明文文件 passout.txt,其中包含一串十六进制的字符串,例如:

A1B2C3D4E5403E9D501B223AD45523D6

并将它们放入一个数组中:

{A1, B2, C3, D4, E5, 40, 3E, 9D, 50, 1B, 22, 3A, D4, 55, 23, D6}

但是,我目前的输出只有:

{D4, 55, 23, D6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

只能取回最后四位十六进制!我真的不知道我犯了什么错误,我在网上找不到任何相关的解决方案!因此,有人愿意帮忙吗?

这是我的代码!

#include <stdio.h>
#include <string.h>
#include <openssl/aes.h>

#define AES_BLOCK_SIZE 16

void main()
{
FILE *ifp;
int i, rv;
unsigned char in[AES_BLOCK_SIZE] = {0};

ifp = fopen("passout.txt", "r");

// loop and read the input file
for(i = 0; i < AES_BLOCK_SIZE; i++)
{
rv = fscanf(ifp, "%X", &in[i]);
if(rv != 1)
i = AES_BLOCK_SIZE;
}

printf("Print result: \n");
for(i=0; i < AES_BLOCK_SIZE; i++)
printf("%X ",*(in+i));
printf("\n");

fclose(ifp);
}

最佳答案

rv = fscanf(ifp, "%X", &in[i]);

改为

rv = fscanf(ifp, "%2hhX", &in[i]);

C99之前

unsigned X;
rv = fscanf(ifp, "%2X", &X);
if(rv != 1)
break;
in[i] = (unsigned char)X;

关于c - 从文本文件中读取十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24328235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com