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);
}
}