gpt4 book ai didi

c - 在C中生成1000字节的十六进制数

转载 作者:行者123 更新时间:2023-11-30 16:04:04 25 4
gpt4 key购买 nike

我想在 C 中生成以种子值(初始值)0706050403020100 开头的十六进制数字。我的下一个数字应该是 0f0e0d0c0b0a0908 等等,以便进行下一次迭代。
这样我想生成 1000 字节的数字。

1)我如何生成这些十六进制数字。

2)如果我想将生成/生成的十六进制数字与具有读取文件内容的缓冲区(动态)中的可用数据逐个比较,如何存储这些数字。

  Any suggestions/answers are most welcome as i am still learning C language.

编辑:这是我尝试过的代码。

#include<stdio.h>
#include<stdlib.h>

int main(){
FILE *fp;
char *buffer, c;
size_t filesize, result;
int i, expected_data[];

fp = fopen("hex_data", "r");
if (fp == NULL) {
fputs("Error\n", stderr);
exit(1);
}
fseek(fp, 0L, SEEK_END);
filesize = ftell(fp);
printf("Size of hex_data file is:%u \n", filesize);
fseek(fp,0L,SEEK_SET);
buffer = (char*) malloc(sizeof(char)*filesize);

if(buffer == NULL){
fputs("\nMemory error ", stderr);
}
buffer_size = fread(buffer, sizeof(char), size, fp);
for(i=0; i < result; i++) {
printf("%c",*(buffer +i));
}
printf("No of elements read from file are:%u \n", buffer_size);

fseek(fp,0L,SEEK_SET);
int current_pos = 0;
while(current_pos < buffer_size) {
if (buffer[current_pos] != expected_data) {
fputs("Error\n",stderr);
}
else {
current_pos++;
expected_data = next_exp_data(data); //function is call hexadecimal numbers produced
}
}

这里我想编写一个函数来生成从0706050403020100开始的1000个字节的十六进制数字。如果这是每次的初始数据,如果我向每个字节添加08,我应该得到下一个数字(直到1000个字节)。但我不知道不知道该怎么做。任何人都可以帮助我。

欢迎对代码进行任何更正。

最佳答案

这将生成 1000 字节的随机十六进制数。 (或者更确切地说,1000 个十六进制数字的 ASCII 表示形式。)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
int i;
for (i=0; i<1000; i++) {
printf("%x", rand()%16);
}
printf("\n");
return EXIT_SUCCESS;
}

如果您想将它们存储在缓冲区中以便稍后与其他内容进行比较,您可能需要查看 sprintf 而不是 printf。为此,您确实需要首先了解字符串在 C 中是如何分配和使用的。

编辑:这可能更符合您的需求。它从标准输入读取十六进制数字(如果需要,可以从文件重定向)并检查它们是否遵循您所描述的模式。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
int expected_number = 7;
unsigned int read_number;
while (1 == scanf("%2x", &read_number)) {
if (expected_number != read_number) {
fprintf(stderr, "Expected %02x but got %02x.\n", expected_number, read_number);
}
expected_number--;
if (expected_number == -1) expected_number = 15;
}
return EXIT_SUCCESS;
}

关于c - 在C中生成1000字节的十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3429033/

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