如何在C中从数组中提取数字/字节?

如何在C中从数组中提取数字/字节?,c,C,在这里,我编写了一个代码,从序列中生成接下来的8个数字 int next_exp_data(unsigned long long int expected_data) { int i=0; unsigned long long int seq_gen_value=1976943448883713; unsigned long long int temp_data[10]; temp_data[0]=seq_gen_value; for(i=0;i<10;i++) {

在这里,我编写了一个代码,从序列中生成接下来的8个数字

int next_exp_data(unsigned long long int expected_data)
{
  int i=0;
  unsigned long long int seq_gen_value=1976943448883713;
  unsigned long long int temp_data[10];
  temp_data[0]=seq_gen_value;
  for(i=0;i<10;i++)
  { 
     printf("%llu",temp_data[i]);
     putchar('\n');
     expected_data=temp_data[i]; 
     temp_data[i+1]=temp_data[i] +2260630401189896;
  }
  return (expected_data);
}   
int-next\u-exp\u数据(无符号长整型数据)
{
int i=0;
无符号long long int seq_gen_value=1976943448883713;
无符号长整型临时数据[10];
温度数据[0]=序列生成值;

对于(i=0;i而言,这取决于机器,但通常采用以下两种方式之一:

union {
    unsigned char b [8];
    long long     i;
} v;
v .i = seq_gen_value;
for (int j = 0;  j < 8;  ++j)
    printf ("%d, ", v .b [j]);
联合{
无符号字符b[8];
龙龙我;
}五,;
v.i=序列生成值;
对于(int j=0;j<8;++j)
printf(“%d”,v.b[j]);
在小端机(x86、vax等)上,字节以最低有效位排在第一位。在大端机上,字节以最高有效位排在第一位



顺便说一句,对“幻数”进行编码会更有用,以便更容易理解它们的含义。例如,与其使用
1976943448883713
,不如将其写成
0x706050430201

我认为您的函数可以执行以下操作

return 1976943448883713 + 8 * 2260630401189896
我认为你的问题还不够清楚,比如你想返回每个数组的编号?如果你想返回数组的临时数据,这很容易。你可以通过

int next_exp_data(unsigned long long int expected_data, unsigned long long int temp_data[])
{
  int i=0;
  unsigned long long int seq_gen_value=1976943448883713;
  temp_data[0]=seq_gen_value;
  for(i=0;i<10;i++)
  { 
     printf("%llu",temp_data[i]);
     putchar('\n');
     expected_data=temp_data[i]; 
     temp_data[i+1]=temp_data[i] +2260630401189896;
  }
  return (expected_data);
}   
int-next\u-exp\u数据(无符号长整型预期数据,无符号长整型临时数据[])
{
int i=0;
无符号long long int seq_gen_value=1976943448883713;
温度数据[0]=序列生成值;

对于(i=0;i,比较C中的数字时使用==,!=,=


我没有阅读你的代码,因为它的格式很糟糕,而且似乎与标题中提出的问题不相关。

如果你的代码格式更好,我会提供帮助。只需将所有行缩进4个空格或一个制表符。@Clark:我缩进了。我想把每个数字一个字符一个字符地比较。@Thej:你发布了很多代码,但是只有两行代码来解释你想做什么。我不明白你想做什么,而且看起来我不是唯一一个。如果你清楚地解释程序应该做什么,你会得到更好的答案。@Gilles:出于测试目的,我的seq_data.c文件的数据与我的函数next_exp_data生成的数据相同。我想将文件的内容与d发电机,即本例中的函数。但我不知道如何比较。(类似发电机和检测器)。我想比较缓冲区中的数据和函数生成的数据。基本上,我想用c编写一个应用程序,读取文件并检查内容,如果数据匹配或不匹配,则给出输出。@我已经在上面发布了我的代码。你能帮我做些什么更改,以便比较函数返回的数字吗?dao:我有e在上面发布了我的代码。您能帮我做些什么更改以便比较从函数返回的数字吗?我希望预期的_数据返回单个数字。例如,如果临时_数据生成0x07060504030201。我希望函数第一次返回0,然后返回7,然后返回0,然后返回6等,以便比较每个数字
int next_exp_data(unsigned long long int expected_data, unsigned long long int temp_data[])
{
  int i=0;
  unsigned long long int seq_gen_value=1976943448883713;
  temp_data[0]=seq_gen_value;
  for(i=0;i<10;i++)
  { 
     printf("%llu",temp_data[i]);
     putchar('\n');
     expected_data=temp_data[i]; 
     temp_data[i+1]=temp_data[i] +2260630401189896;
  }
  return (expected_data);
}   
int next_exp_data( unsigned long long int temp_data[])
{
  int i=0;
  unsigned long long int expected_data;
  unsigned long long int seq_gen_value=1976943448883713;
  temp_data[0]=seq_gen_value;
  for(i=0;i<10;i++)
  { 
     printf("%llu",temp_data[i]);
     putchar('\n');
     expected_data=temp_data[i]; 
     temp_data[i+1]=temp_data[i] +2260630401189896;
  }
  return expected_data; //dont use (expected_data), it will make things slower.
}