Я пытаюсь создать симулятор конвейера команд, и у меня возникли проблемы с запуском. То, что мне нужно сделать, это прочитать двоичный файл из stdin, а затем сохранить его в памяти, пока я манипулирую данными. Мне нужно читать куски ровно 32 бита один за другим.
Как читать в кусках ровно 32 бита за раз? Во-вторых, как сохранить его для манипуляции позже?
Вот то, что у меня есть до сих пор, но изучая бинарные куски, которые я читаю дальше, это просто не выглядит правильным, я не думаю, что читаю ровно 32 бита, как мне нужно.
char buffer[4] = { 0 }; // initialize to 0
unsigned long c = 0;
int bytesize = 4; // read in 32 bits
while (fgets(buffer, bytesize, stdin)) {
memcpy(&c, buffer, bytesize); // copy the data to a more usable structure for bit manipulation later
// more stuff
buffer[0] = 0; buffer[1] = 0; buffer[2] = 0; buffer[3] = 0; // set to zero before next loop
}
fclose(stdin);
Как я могу читать по 32 бита за раз (все они 1/0, нет строк и т.д.), и что я храню в нем, char[]
okay?
EDIT: я могу прочитать двоичный файл, но ни один из ответов не порождает биты в правильном порядке - все они искалечены, я подозреваю, что суждение и проблемы с чтением и перемещением 8 бит вокруг (1 char) в то время - это нужно для работы с Windows и C...?