CHS与LBA之间转换程序

时间:2023-03-10 02:54:20
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==)
{
printf("CHS: ");
scanf("%d%d%d",&c,&h,&s);
lba=(c*H+h)*S+s-;
printf("LBA: %d\n",lba);
}
else
{
printf("LBA: ");
scanf("%d",&lba);
c=lba/(S*H);
h=lba/S%H;
s=lba%S+;
printf("CHS: %d %d %d\n",c,h,s);
} goto s; return ;
}