2010-06-04 10 views
5

Chciałbym wiedzieć, czy istnieje funkcja w .NET, który konwertuje bajtów numerycznych na ciąg z poprawnym pomiarze?bajtów (1024) na konwersję ciągów znaków (1 KB)?

Czy po prostu musimy postępować zgodnie ze starym podejściem polegającym na dzieleniu i utrzymywaniu jednostek konwersji, aby to zrobić?

+0

spojrzeć @ http://stackoverflow.com/questions/281640/how-do-i-get-a-human-readable-file-size -using-net –

+0

Wow wygląda tak, jak ten post naprawdę ma różne smaki :) Dzięki człowieku –

Odpowiedz

7

Nie, nie ma.

można napisać tak:

public static string ToSizeString(this double bytes) { 
    var culture = CultureInfo.CurrentUICulture; 
    const string format = "#,0.0"; 

    if (bytes < 1024) 
     return bytes.ToString("#,0", culture); 
    bytes /= 1024; 
    if (bytes < 1024) 
     return bytes.ToString(format, culture) + " KB"; 
    bytes /= 1024; 
    if (bytes < 1024) 
     return bytes.ToString(format, culture) + " MB"; 
    bytes /= 1024; 
    if (bytes < 1024) 
     return bytes.ToString(format, culture) + " GB"; 
    bytes /= 1024; 
    return bytes.ToString(format, culture) + " TB"; 
} 
+0

O ile się nie mylę, myślę, że byłoby lepiej iterować z pętlą 'while' lub' do'. I to rozwiązanie byłoby również lepsze dla oczu. To tylko moja opinia. : \ –

+0

@Alex: Masz rację; Nie pomyślałem o tym. Później zobaczyłem inną odpowiedź, która tak zrobiła. – SLaks

+0

Ganked [.] (Http://stealinurcode.lol) – Will

Powiązane problemy