原理及介绍来自维基百科 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,每磁道的扇区数 */#includeint 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; }