CHS与LBA之间转换程序

原理及介绍来自维基百科 http://zh.wikipedia.org/wiki/%E9%82%8F%E8%BC%AF%E5%8D%80%E5%A1%8A%E4%BD%8D%E5%9D%80

个人用的小程序

/*
#lba=(#c*H+#h)*S+#s-1

#c=#lba/(S*H)
#h=(#lba/S)%H
#s=(#lba%S)+1

#c、#h、#s分别是磁柱、磁头、扇区的编号(起始值0、0、1)
#lba是逻辑区块编号(起始值0)
H=heads per cylinder,每个磁柱的磁头数
S=sectors per track,每磁道的扇区数
*/

#include <stdio.h>
int main(void)
{
    int H,S;
    int choose;
    int c,h,s,lba;

    printf("H S(通常255 63): ");
    scanf("%d%d",&H,&S);
s:
    printf("\n1.CHS to LBA\t2.LBA to CHS\t");
    scanf("%d",&choose);

    if(choose==1)
    {
        printf("CHS: ");
        scanf("%d%d%d",&c,&h,&s);
        lba=(c*H+h)*S+s-1;
        printf("LBA: %d\n",lba);
    }
    else
    {
        printf("LBA: ");
        scanf("%d",&lba);
        c=lba/(S*H);
        h=lba/S%H;
        s=lba%S+1;
        printf("CHS: %d %d %d\n",c,h,s);
    }

    goto s;
    
    return 0;
}

 

posted @ 2014-01-05 16:30  ZackCoder  阅读(1023)  评论(0编辑  收藏  举报