Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 解析一个十六进制文件并将其拆分为6位整数_C_Arrays_Hex - Fatal编程技术网

C 解析一个十六进制文件并将其拆分为6位整数

C 解析一个十六进制文件并将其拆分为6位整数,c,arrays,hex,C,Arrays,Hex,我有一个包含十六进制的代码 01F640 01E120 04EF20 000000 我想把每6位加到一个数组中。数组将它们存储为整数,以便程序的其余部分可以计算它们 int main(int argc,const char*argv[]{ 如果(argc

我有一个包含十六进制的代码

 01F640
 01E120
 04EF20
 000000
我想把每6位加到一个数组中。数组将它们存储为整数,以便程序的其余部分可以计算它们

int main(int argc,const char*argv[]{
如果(argc<1){
printf(“您需要指定一个文件!”);
退出(退出失败);
}
char ch;
char-chars[6];
int charCount=0;
文件*f;
f=fopen(argv[1],“r”);
int i=0,j=0;
而((ch=fgetc(f))!=EOF){
如果(ch=='\n')继续;
printf(“r%X”,ch);
printf(“\n”);
chars[i]=(char)ch;
i++;

如果(i您可以将字符读入缓冲区,然后使用strtol

int i = 0, j = 0;
char buffer[7];
buffer[6] = '\0';
while((ch = fgetc(f)) != EOF){
   if(ch == '\n') continue;
   buffer[i++] = ch;
   if(i == 6) {
      i = 0;
      prog[j++] = (int)strtol(buffer, NULL, 16);
   }
}

您应该编辑您的代码和任何其他文档,如直接输入问题的示例。外部链接会出错。您还应该解释代码的具体问题。您的描述说明了您正在尝试做什么,但没有说明什么不起作用。@RetiredInja刚刚添加了外部代码,我没有Idea出了什么问题!:P我将尝试进行更多的调试,看看出了什么问题。六个十六进制数字超过六位。它是三个字节。你为什么不直接读取整行并将其转换为整数呢?理想情况下,你的示例中应该有一些十六进制字符,以清楚地表明它们不仅仅是六位数的基数10个整数。@EOF我指的是六个十六进制数字的“数字”。我找不到一个好名字。
fgets()
。不要让它变得更难。但是fgets会使忽略换行变得困难。不,你只需要让缓冲区足够大。对于使用多个字符表示换行的环境,你的解决方案失败(
\r\n
\n\r
)。
int i = 0, j = 0;
char buffer[7];
buffer[6] = '\0';
while((ch = fgetc(f)) != EOF){
   if(ch == '\n') continue;
   buffer[i++] = ch;
   if(i == 6) {
      i = 0;
      prog[j++] = (int)strtol(buffer, NULL, 16);
   }
}