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; }