计算分区整数器

时间:2022-10-12 15:39:18 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算分区整数器

关于这个分区,硬盘厂商设计的是1GB=1000Mb,而操作系统却认为1Gb=1024Mb,而这个整数分区的公式既不是按照硬盘厂商的设计也不是操作系统的设计,而是另有误差。原因就是硬盘在分区和格式化之后还会在硬盘上占用一定的空间用来存储磁盘结构和数据位置等信息。

对于FAT32格式:

应分配MB数=(分区GB数-1)×4+1024×分区GB数

也就是说,如果你要在FAT32格式的硬盘上分出一个10 GB的硬盘,那么:

你应该分配的MB数=(10-1)×4+1024×10=10276 MB

这样你就可以得到整数的10 GB分区了。

对于NTFS格式:

硬盘一般有255磁头,63扇区,故每柱面大小为:

512byte x 255 x 63=8225280bytes =7.84423828125 MB

如果要分10 GB,那么要10x1024 MB=10240 MB

需要柱面数为10240÷7.84423828125=1305.416744475568004979769685652

取整数既为1306个柱面

应分MB数为1306x7.84423828125=10244.5751953125 MB

不管小数点后面几位都进1,也就是10245 MB,系统也就认为是10.00 GB了。

==============================================

下面是修正版源码:

#include <GUIConstantsEx.au3>

#Region ### START Koda GUI section ### Form=

$Form1 = GUICreate("整数分区计算器", 200, 150, -1, -1)

$Radio1 = GUICtrlCreateRadio("NTFS",25,5)

GUICtrlSetState(-1,$GUI_CHECKED)

$Radio2 = GUICtrlCreateRadio("FAT32",125,5)

$Label1 = GUICtrlCreateLabel("分区大小(GB)", 25, 30, 100, 20)

$Input1 = GUICtrlCreateInput("", 25, 50, 150, 20)

$Label2 = GUICtrlCreateLabel("计算结果(MB)", 25, 75, 100, 20)

$Input2 = GUICtrlCreateInput("", 25, 95, 150, 20)

$Button1 = GUICtrlCreateButton("计算", 50, 120, 100, 25)

GUISetState(@SW_SHOW)

#EndRegion ### END Koda GUI section ###

While 1

$nMsg = GUIGetMsg()

Switch $nMsg

Case $GUI_EVENT_CLOSE

Exit

Case $Button1

If GUICtrlRead($Radio2)=1 Then

$GB = GUICtrlRead($Input1)

$MB = ($GB - 1) * 4 + 1024 * $GB

GUICtrlSetData($Input2, $MB)

EndIf

If GUICtrlRead($Radio1)=1 Then

$GB = GUICtrlRead($Input1)

$ZS = int($GB*1024/7.84423828125)+1

$MB = int($ZS*7.84423828125)+1

GUICtrlSetData($Input2, $MB)

EndIf

EndSwitch

WEnd

本文来源:https://www.wddqw.com/doc/062fe2ce58f5f61fb73666cb.html