计算分区整数器
关于这个分区,硬盘厂商设计的是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
正在阅读:
计算分区整数器01-01
2022年度教师简历自我评价01-01
我的愿望四年级作文400字左右交通员01-01
关于感情的语句01-01
青春励志背景图片-青春的色彩01-01
七年级语文上册第六单元28皇帝的新装人物形象分析苏教版01-01
关于黄豆的观察日记5则01-01
深受汉语影响的日本语教案01-01
七夕:爱情,终将在这天被标上“价格”01-01