Добрый вечер,
Я написал приведенный ниже код на C, чтобы прочитать и распечатать из двоичного файла случайную шестнадцатеричную строку с постоянной длиной, зная определенное смещение и расположение строки относительно смещения.
FILE *f = NULL;
unsigned char *buffer = NULL;
unsigned long fileLen;
unsigned char bytes[] = {0x22, 0x22, 0x22, 0x22};
f = fopen(argv[1], "rb");
if (!f)
{
fprintf(stderr, "Unable to open %s\n", argv[1]);
return -1;
}
fseek(f, 0, SEEK_END);
fileLen=ftell(f);
fseek(f, 0, SEEK_SET);
buffer=malloc(fileLen);
if (!buffer)
{
fprintf(stderr, "Memory error!\n");
fclose(f);
return -1;
}
fread(buffer, fileLen, 1, f);
fclose(f);
unsigned int *p = memmem(buffer, fileLen, bytes, 4);
if (!p) {
return -1;
}
unsigned long off_to_string = 4 + 0x12 + ((void *)p) - ((void *)buffer);
for (unsigned long c = off_to_string; c < off_to_string+0x30; c++)
{
printf("%.2X", (int)buffer[c]);
}
printf("\n");
free(buffer);
Я хотел бы использовать этот код в приложении Какао, я пытался сделать что-то вроде:
NSMutableString *tehString = [[NSMutableString alloc] init];
for (unsigned long c = off_to_string; c < off_to_string+0x30; c++)
{
[tehString appendString:...]
}
проблема в том, что я должен передать строку NSString appendString:
иЯ даже не знаю, как напечатать его шестнадцатеричное представление.
Спасибо!
PS: Не стесняйтесь улучшать код "читателя шестнадцатеричной строки":)