---
title: "Konvertera till MB/GB/KB"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/88934-konvertera-till-mb-gb-kb"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "aleborg"
published: "2003-10-19T20:09:50.000Z"
updated: "2003-10-19T21:55:40.000Z"
replies: 3
views: 835
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/88934-konvertera-till-mb-gb-kb"
---

# Konvertera till MB/GB/KB

## #1 — aleborg, 2003-10-19T20:09Z

håller på att göra om en funktion från ASP till C#
Grundkoden:

```
Function ConvFileSize (FileSize, Decimaler)
	Dim DotPos, strFileSize
	FileSize = cDbl(FileSize)

	' Gigabytes.
	If FileSize >= 1048576000 Then
		strFileSize = cStr(cSng(FileSize / 1048576000))
		DotPos = Instr(strFileSize, ".")
		IF DotPos THEN
			IF Decimaler = 0 THEN Decimaler = -1
			strFileSize = MID(strFileSize, 1, DotPos + Decimaler)
		END IF
		strFileSize = strFileSize + " gb"
	' Megabytes.
	ElseIf FileSize >= 1048576 THEN
		strFileSize = cStr(cSng(FileSize / 1048576))
		DotPos = Instr(strFileSize, ".")
		IF DotPos THEN
			IF Decimaler = 0 THEN Decimaler = -1
			strFileSize = MID(strFileSize, 1, DotPos + Decimaler)
		END IF
		strFileSize = strFileSize + " mb"
	' Kilboytes.
	ElseIf FileSize >= 1024 THEN
		strFileSize = cStr(cSng(FileSize / 1024))
		DotPos = InStr(strFileSize, ".")
		IF DotPos THEN
			IF Decimaler = 0 THEN Decimaler = -1
			strFileSize = MID(strFileSize, 1, DotPos + Decimaler)
		END IF
		strFileSize = strFileSize + " kb"
	' Bytes.
	Else
		IF FileSize > 1 THEN
			strFileSize = cStr(Int(FileSize)) + " b"
		ELSE
			strFileSize = cStr(Int(FileSize)) + " b"
		END IF
	END IF
	
	ConvFileSize = Trim(strFileSize)

End Function
```

Min kod:

```
		public string ConvFileSize(int FileSize,int Decimaler)
		{
			double mySize = Convert.ToDouble(FileSize);
			string strFileSize;
			int DotPos;
			int gb=1048576000,mb=1048576,kb=1024;

			//Gigabytes.
			if(mySize >= gb)
			{
				strFileSize = Convert.ToString(Convert.ToSingle(mySize / gb));
				DotPos = strFileSize.IndexOf(".",0);
				if(DotPos>0)
				{
					if(Decimaler == 0)
						Decimaler = -1;
					strFileSize = strFileSize.Substring(1, DotPos + Decimaler);
				}
				strFileSize = strFileSize + " gb";
			}
			//Megabytes.
			else if(FileSize >= mb)
			{
				strFileSize = Convert.ToString(Convert.ToSingle(mySize / mb));
				DotPos = strFileSize.IndexOf(".",0);
				if(DotPos>0)
				{
					if(Decimaler == 0)
						Decimaler = -1;
					strFileSize = strFileSize.Substring(1, DotPos + Decimaler);
				}
				strFileSize = strFileSize + " mb";
			}
			//Kilboytes.
			else if(mySize >= kb)
			{
				strFileSize = Convert.ToString(Convert.ToSingle(mySize / kb));
				DotPos = strFileSize.IndexOf(".",0);
				if(DotPos>0)
				{
					if(Decimaler == 0)
						Decimaler = -1;
					strFileSize = strFileSize.Substring(1, DotPos + Decimaler);
				}
				strFileSize = strFileSize + " kb";
			}
			//Bytes.
			else
			{
				if(mySize > 1)
					strFileSize = Convert.ToString(Convert.ToInt32(FileSize)) + " b";
				else
					strFileSize = Convert.ToString(Convert.ToInt32(FileSize)) + " b";
			}
			return strFileSize.Trim();
		}
```

Men jag får ut:
.36 mb 
när jag skickar in: 1433206 och 2 (decimaler)
och när jag provade med det här:

MMPath storlek = new MMPath();
int dec=2;
storlek.ConvFileSize(Convert.ToInt32(rS\["MDownSize"\].ToString()),dec);

Så fick jag felet:
System.ArgumentOutOfRangeException: Index and length must refer to a location within the string. Parameter name: length

Vad gör jag fel?

Permalänk: https://www.webforum.nu/p/88934

## #2 — renholm, 2003-10-19T21:10Z

Denna kanske kan hjälpa dig? :)
<http://www.webforum.nu/showthread.php?s=&postid=723735#post723735>

Permalänk: https://www.webforum.nu/p/1190126

## #3 — tydal, 2003-10-19T21:11Z

Re: Konvertera till MB/GB/KB

Varför så mycket krångligt tjafs? Skulle inte där net förenkla? ;-)

```
  char NiceSize[12];
  double size;
  if (size > 1073741824)
  {
    size /= 1073741824;
    sprintf(NiceSize, "%5.2f GB", size);
  }
  elseif (size > 1048576)
  {
    size /= 1048576;
    sprintf(NiceSize, "%5.2f MB", size);
  }
  else if (size > 1024)
  {
    size /= 1024;
    sprintf(NiceSize, "%3.2f kB", size);
  }
  else
    sprintf(NiceSize, "%4.0f bytes", size);
```

\> <http://www.webforum.nu/showthread.p...3735#post723735>

Ja, jag tänkte väl att det måste gå att göra på något liknande sätt.

Permalänk: https://www.webforum.nu/p/1190127

## #4 — aleborg, 2003-10-19T21:55Z

Missade att nån hade svarat i den :r :e

Permalänk: https://www.webforum.nu/p/1190148

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/88934-konvertera-till-mb-gb-kb
