computer00 你的 AT89C51SND

[复制链接]
2583|3
 楼主| 88088 发表于 2007-12-17 19:00 | 显示全部楼层 |阅读模式
在&nbsp;file_system.c&nbsp;file&nbsp;&nbsp;文件<br /><br /><br /><br />unsigned&nbsp;long&nbsp;int&nbsp;get_next_sector(void)&nbsp;&nbsp;//根据当前簇号,获取下一个扇区地址<br />{<br />&nbsp;unsigned&nbsp;long&nbsp;int&nbsp;LBA;<br />&nbsp;unsigned&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;LBA=(file.next_cluster_number)/((dbr[driver_number].bytes_per_sectors)/4);&nbsp;&nbsp;//计算扇区地址<br />&nbsp;i=(file.next_cluster_number)*4-LBA*dbr[driver_number].bytes_per_sectors;&nbsp;//计算偏移地址<br /><br /><br /><br />解析一下为什么这样计算<br />谢谢&nbsp;computer00
 楼主| 88088 发表于 2007-12-18 10:38 | 显示全部楼层

等待 computer00 你的解答

  
 楼主| 88088 发表于 2007-12-18 18:03 | 显示全部楼层

问题还没有解决 不能沉

  
computer00 发表于 2007-12-18 19:36 | 显示全部楼层

因为是FAT32文件系统,所以一个簇号需要4字节保存

因此每个扇区能保存的簇号个数就是:((dbr[driver_number].bytes_per_sectors)/4)个。<br />根据簇号,可以计算出它在哪个扇区。就是用它去除以每个扇区的簇号数。<br /><br />LBA=(file.next_cluster_number)/((dbr[driver_number].bytes_per_sectors)/4);&nbsp;&nbsp;//计算扇区地址<br /><br />计算出在哪个扇区了,用总数减去前面整数个扇区,就是偏移量了<br /><br />i=(file.next_cluster_number)*4-LBA*dbr[driver_number].bytes_per_sectors;&nbsp;//计算偏移地址<br /><br /><br /><br />这样给定一个簇号,我们就可以计算出它在FAT中的第几扇区,以及在该扇区中的偏移量。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

102

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部