我有一个 file包含十六进制代码
01F640
01E120
04EF20
000000
我想将每 6 位添加到一个数组中。该数组将它们存储为整数,以便程序的其余部分可以计算它们。 Here is the code I have so far .
int main(int argc, const char *argv[]){
if(argc < 1){
printf("You need to specify a file!");
exit(EXIT_FAILURE);
}
char ch;
char chars[6];
int charCount = 0;
FILE *f;
f = fopen(argv[1], "r");
int i = 0, j = 0;
while((ch = fgetc(f)) != EOF){
if(ch == '\n') continue;
printf("r%X", ch);
printf("\n");
chars[i] = (char)ch;
i++;
if(i <= 6){
i = 0;
int hex[6];
int m;
for(m = 0; m < 6; m++){
printf("\ns%X", chars[m]);
char buffer[1];
buffer[0] = chars[m];
hex[m] = (int) strtol(buffer, NULL, 16);
}
unsigned int k = (hex[0]<<40)|(hex[1]<<32)|(hex[2]<<24)|(hex[3]<<16)|(hex[4]<<8)|hex[5];
prog[j++] = k;
memset(&chars[0], 0, sizeof(chars));
}
}
int l;
for(l = 0; l < PROG_LENGTH; l++){
printf("p%X", prog[l]);
if(prog[l] == 0) break;
}
}
我想做的是读取每个字符并将其添加到字符数组中。一旦该数组达到 6,就用这些位创建一个 int 并重置该数组。
最佳答案
您可以将字符读入缓冲区,然后使用 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);
}
}
关于c - 解析十六进制文件并将其拆分为 6 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201369/