[英]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.