硬盘整数分区方法

2009年9月20日 | 分类: 工具收集 | 标签: , ,

哈哈,挺有洁癖的,所以…

硬盘一般有255磁头,63扇区,故每柱面大小为:
512byte x 255 x 63=8225280bytes =7.84423828125 MB
如果要分40GB,那么要40x1024MB=40960MB
需要柱面数为40960÷7.84423828125=5221.66
取整数既为5222个柱面
应分M数为5222×7.84423828125=40962.6123046875MB
不管小数点后面几位都进1,也就是40963MB,windows就认为是40GB了。
这个方法NTFS和FAT32通用。


下面附1GB到200GB精确计算结果:

1G : 1028M
2G : 2056M
3G : 3075M
4G : 4103M
5G : 5123M
6G : 6150M
7G : 7170M
8G : 8198M
9G : 9217M
10G : 10245M
15G : 15367M
20G : 20482M
25G : 25604M
30G : 30726M
35G : 35841M
40G : 40963M
45G : 46085M
50G : 51208M
55G : 56322M
60G : 61444M
65G : 66567M
70G : 71681M
75G : 76803M
80G : 81926M
85G : 87048M
90G : 92162M
95G : 97285M
100G : 102407M
110G : 112644M
120G : 122888M
130G : 133125M
140G : 143362M
150G : 153606M
160G : 163843M
170G : 174088M
180G : 184324M
190G : 194561M
200G : 204806M

此精确分区结果,在管理工具-磁盘管理界面,和Windows资源管理器里面显示的是整数,10G就是10.00GB,20G就是20.00GB,40G就是40.00GB。

(注:FAT32支持最大的逻辑分区为32GB)

这个脚本可以计算任意大小的整数分区。
把下面代码保存为intPartition.vbs文件,双击即可。

Dim g, cylinderSize, cylinderNums
g = InputBox("请输入分区大小,单位G", "整数分区", "40")
cylinderSize = 512 * 255 * 63 / 1024 / 1024
cylinderNums = Fix(g * 1024 / cylinderSize) + 1
MsgBox Fix(cylinderNums * cylinderSize) + 1
目前还没有任何评论.

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。