【发布时间】:2010-08-09 14:07:24
【问题描述】:
我想在 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 个字节)。但我不不知道怎么做。谁能帮帮我。
欢迎对代码进行任何更正。
【问题讨论】:
-
你能提供更多关于如何生成数字的信息吗?它们应该是随机的,还是有一些将
0706050403020100链接到0f0e0d0c0b0a0908的模式?也许即使你告诉我们序列中接下来的几个数字应该是什么,我们也能理解你的意思。 -
没有数字不是随机的。它是一个顺序数据。如果 0706050403020100 是初始值,下一个数字应该是接下来的八个十六进制数字,依此类推。或者如果 76543210 是数字,接下来的八个十六进制数字是为下一次迭代生成。
-
我不清楚您所说的“接下来的八个十六进制数字”是什么意思;所示代码从文件中读取字节。
-
对不起代码。是的,代码确实从文件中读取字节。我想用 C 编写一个应用程序,它读取具有 1000 字节顺序数据的文件的内容。我想比较相同的数据在我的应用程序中检查它是否正确。我的初始值(种子)是 x0706050403020100(十六进制)(64 位)。我想检查 1000 个字节。
标签: c