在C中为1000字节生成十六进制数

在C中为1000字节生成十六进制数,c,C,我想用C生成十六进制数,以种子值(初始值)0706050403021000开始。我的下一个数字应该是0f0e0d0c0b0a0908,以此类推,以便下一次迭代。 这样我想为1000字节生成数字 1) 如何生成这些十六进制数 2) 如果我想逐字符比较生成/生成的十六进制数与缓冲区(动态)中的可用数据(具有读取文件的内容),如何存储这些数字 Any suggestions/answers are most welcome as i am still learning C language. 编

我想用C生成十六进制数,以种子值(初始值)0706050403021000开始。我的下一个数字应该是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
    }
  }
#包括
#包括
int main(){
文件*fp;
字符*缓冲区,c;
大小\u t文件大小、结果;
int i,预期的_数据[];
fp=fopen(“十六进制数据”,“r”);
如果(fp==NULL){
fputs(“错误\n”,标准指令);
出口(1);
}
fseek(fp,0L,SEEK_END);
filesize=ftell(fp);
printf(“十六进制数据文件的大小为:%u\n”,文件大小);
fseek(fp、0L、SEEK\u集);
缓冲区=(char*)malloc(sizeof(char)*文件大小);
if(buffer==NULL){
fputs(“\n内存错误”,标准错误);
}
buffer_size=fread(buffer,sizeof(char),size,fp);
对于(i=0;i
这里我想写一个函数来生成1000字节的十六进制数,从070605040300100开始。如果这是初始数据,每次我给每个字节加08,我应该得到下一个数字(直到1000字节)。但是我不知道怎么做。有人能帮我吗


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

您的数字很大,因此请使用64位无符号整数数据类型,例如
无符号长
。如果不采用新方案,您将无法处理大于
2**64
的数字。请使用
printf(“%x”,value)
打印十六进制值


您可以在GNU GMP库中查找任意大的整数。

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


你能提供更多关于如何生成这些数字的信息吗?它们应该是随机的,还是有某种模式将
0706050403021000
链接到
0f0e0d0c0b0a0908
?也许即使你告诉我们序列中接下来的几个数字应该是什么,我们也能理解你的意思。没有数字是不运行的dom。这是一个顺序数据。如果0706050403021000是初始值,那么下一个数字应该是下一个八个十六进制数字,依此类推。或者如果76543210是数字,那么下一个十六进制数字将为下一次迭代生成。我不清楚“下八个十六进制数字”是什么意思;显示的代码从文件中读取字节。很抱歉,代码是从文件中读取字节的。我想用C编写一个应用程序,读取具有1000字节顺序数据的文件的内容。我想比较应用程序中的相同数据,并检查其是否正确。我的初始值(种子)是X07060504030100(十六进制)(64位)。我想检查1000字节。谢谢你的输入。大卫。但是我想生成连续的十六进制数,这样它就可以继续生成接下来的8个数字等等。哦,好的,我明白了。在这种情况下,你可能根本不需要生成它们。如果你将它们与现有数据进行比较,只需读取现有数据(使用
scanf(“%2x”,&inputNumber);
或类似内容)每次读取一对新的十六进制数字时,请将它们与
int
计数器进行比较,该计数器从15减小到0,然后再次返回到15。请参阅上面的编辑,以获取一些可能有用的代码。感谢您的回答。但我想用C编写一个应用程序,用于读取包含1的顺序数据的文件内容000字节。我想比较应用程序中的相同数据并检查其是否正确。我的初始值(种子)是x0706050403020100(十六进制)(64位)。我想检查1000字节。@Thej:除非我误解了你,否则代码就是这样。如果你需要更多帮助,那么你需要解释当前提供的解决方案有什么问题。非常感谢。我不是那个意思。我不习惯在C中使用命令行参数。所以我很难理解你是什么试着去做。永远不要欣赏你的代码。
#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;
}
#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;
}