I’m not sure how you are measuring performance. This code takes a string as input…and string manipulation is usually very expensive in terms of processing. If I can take advantage of using powers of 1000 instead of 1024 I could use the length of the numeric string which keeps me processing using small integers. How awful is this?
It does support strings like “123456789101112131415161718”
Dim length as Integer
Dim shortbytes as String
Dim prettysize as string
length = len(bytestr)
Select Case length
Case 1, 2, 3
If bytestr = "1 " then
prettysize = "1 byte"
Else
prettysize = bytestr + " Bytes"
End
Case 4
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " KB"
case 5
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " KB"
case 6
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " KB"
Case 7
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " MB"
case 8
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " MB"
case 9
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " MB"
Case 10
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " GB"
case 11
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " GB"
case 12
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " GB"
Case 13
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " TB"
case 14
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " TB"
case 15
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " TB"
Case 16
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " PB"
case 17
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " PB"
case 18
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " PB"
Case 19
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " EB"
case 20
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " EB"
case 21
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " EB"
Case 22
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " ZB"
case 23
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " ZB"
case 24
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " ZB"
Case 25
shortbytes = str((val(left(bytestr,4))+ 5))
prettysize = left(shortbytes,1)+"."+mid(shortbytes,2,2) + " YB"
case 26
shortbytes = str((val(left(bytestr,5))+ 5))
prettysize = left(shortbytes,2)+"."+mid(shortbytes,3,2) + " YB"
case 27
shortbytes = str((val(left(bytestr,6))+ 5))
prettysize = left(shortbytes,3)+"."+mid(shortbytes,4,2) + " YB"
Else
prettysize = "Undefined"
End Select
return prettysize