簡體   English   中英

將磁盤塊讀取為位圖

[英]read a disk block as bitmap

我正在嘗試讀取包含塊位圖和inode位圖的塊

我將塊讀取為無符號char數組,然后將其轉換為二進制,如下所示:

for (i = 0; i < 4096; i++) {
    for (j = 8; j <=0 ; j--) {
        bits[j] = bitmap[i]%2;
        bitmap[i] = bitmap[i]/2;
    }
    for(t=0; t<8;t++)
        printf("%d\t",bits[t]);
    printf("\n");
    }

當我將'0'放入char並將其打印為

printf("%d",'0');

我得到48,並且我的bits數組包含00110000,但是,當我檢查inode位圖時,它不起作用,例如,位圖是:

1 1 1 0 0 0 0
但我明白了
0 0 0 0 1 1 1

我無法檢查塊位圖是否發生相同的情況。

重復一遍,該代碼可以正常對話,例如,它打印00110000為48,對於char'0',它也打印48。 這種交換發生在inode位圖上。 當我進行更改時,它將適用於inode位圖,但是現在如何將其用於空白位圖。 這將修復代碼,但邏輯錯誤。

任何想法?

for(t=0; t<8;t++)
        printf("%d\t",bits[t]);

首先打印位置0(最低有效位)的位,最后打印位置7(最高有效位)的位。 如您所願,將循環更改為:

for(t=7; t>=0;t--)

或類似。

看起來您的位順序已交換為大端與小端。 您可以與htonl, htons, ntohl, ntohs系列功能互換http://en.wikipedia.org/wiki/Endianness 嘗試man htons 或反向運行循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM