распечатать растровое изображение inode как беззнаковый символ

Как я могу распечатать биты растрового изображения inode, который выбирается как беззнаковый символ? это мой код, который используется для получения растрового изображения. Я хочу напечатать растровое изображение в двоичном формате.

#include <cstdlib>
#include <ext2fs/ext2fs.h>
#include <linux/fs.h>
#include <iostream>
#include <stdio.h>
#include <fstream>
#include <fcntl.h>

using namespace std;

int main() {
int fd, block_size;
char boot[1024];
struct ext2_super_block super_block;
fd = open("/dev/sda6", O_RDONLY);
printf("Error: %s\n", strerror(errno));

/* Reads the boot section and the superblock */
read(fd, boot, 1024);
read(fd, &super_block, sizeof (struct ext2_super_block));

if (super_block.s_magic != EXT2_SUPER_MAGIC) {
fprintf(stderr, "Not an Ext2 filesystem!\n");
getchar();
exit(1);
}

/* Prints the Magic Number */
//    printf("%x\n", super_block.s_magic);

printf("%x\n", super_block.s_log_block_size);
block_size = 4096 << super_block.s_log_block_size;

/* calculate number of block groups on the disk */
unsigned int group_count =
1 + (super_block.s_blocks_count - 1) / super_block.s_blocks_per_group;
/* calculate size of the group descriptor list in bytes */
unsigned int descr_list_size =
group_count * sizeof (struct ext2_group_desc);
struct ext2_group_desc group_descr;

/* position head above the group descriptor block */
lseek(fd, 1024 + block_size, SEEK_SET);
read(fd, &group_descr, sizeof (group_descr));
/* location of the super-block in the first group */
#define BASE_OFFSET 1024
#define BLOCK_OFFSET(block) (BASE_OFFSET + (block-1)*block_size)

struct ext2_super_block super;
struct ext2_group_desc group;
unsigned char *bitmap, bits[8];
/* the super block */
/* the group descritopr */
/* ... [read superblock and group descriptor] ... */
bitmap = (unsigned char*) malloc(block_size);
/* allocate memory for the bitmap */
lseek(fd, BLOCK_OFFSET(group.bg_block_bitmap), SEEK_SET);
read(fd, bitmap, block_size);
/* read bitmap from disk */
unsigned char* bla = (unsigned char*) bitmap;
printf("bitmap: ");
for (int i = 0; i < block_size; i++) {
printf("%x", &bitmap[i]);
}
free(bitmap);

printf("%x\n", block_size);

close(fd);

return 0;
}

Я немного сомневаюсь в этом коде. Как я могу быть уверен в результате. Я запускаю его в файловой системе Ubuntu 12.4 ex4.

РЕДАКТИРОВАТЬ: я сделал сырой образ диска и попытался прочитать его, но получить сообщение об ошибке, что это не файловая система EXtended2?
это адрес, который я использовал:

fd = open("/dev/zero", O_RDONLY);

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]