Jak konwertować liczby szesnastkowe i dziesiętne w C #?
c#
hex
type-conversion
decimal
Andy McCluggage
źródło
źródło
int.Parse
nie ma opcji, aby określić podstawę jakoint
, tylko jako jedną z kilku prawidłowychNumberStyles
. W przypadku podstawy 16 jedno i drugie jest w porządku, ale jako ogólne rozwiązanie dobrze jest wiedzieć, jak działają oba.Hex -> decimal:
Dziesiętne -> Szesnastkowe
źródło
Convert.ToInt64(hexValue, 16);
jest to, że dokona konwersji, jeśli0x
prefiks istnieje lub nie, podczas gdy niektóre inne rozwiązania nie.Wygląda na to, że możesz powiedzieć
aby uzyskać ułamek dziesiętny z szesnastkowego.
Odwrotnie jest:
źródło
Jeśli chcesz uzyskać maksymalną wydajność podczas konwersji z liczb szesnastkowych na dziesiętne, możesz zastosować podejście z wstępnie wypełnioną tabelą wartości szesnastkowych na dziesiętne.
Oto kod, który ilustruje ten pomysł. Moje testy wydajności wykazały, że może być o 20% -40% szybszy niż Convert.ToInt32 (...):
źródło
Z Geekpedia :
źródło
źródło
Zamiana liczb szesnastkowych na dziesiętne
Zamiana liczb dziesiętnych na szesnastkowe
Więcej informacji znajdziesz w tym artykule
źródło
źródło
Nie jest to najłatwiejszy sposób, ale ten kod źródłowy umożliwia poprawienie dowolnego typu liczby ósemkowej, tj. 23,214, 23, 0,512 i tak dalej. Mam nadzieję, że to ci pomoże ...
źródło
Spróbuj użyć BigNumber w C # - reprezentuje dowolnie dużą liczbę całkowitą ze znakiem.
Program
Wynik
Możliwe wyjątki,
ArgumentNullException - wartość jest null.
FormatException - wartość ma nieprawidłowy format.
Wniosek
Możesz konwertować ciąg i przechowywać wartość w BigNumber bez ograniczeń dotyczących rozmiaru liczby, chyba że ciąg jest pusty i nie jest analityczny
źródło
Jeśli jest to naprawdę duży ciąg szesnastkowy przekraczający pojemność normalnej liczby całkowitej:
W przypadku .NET 3.5 możemy użyć klasy BigInteger firmy BouncyCastle:
NET 4.0 ma klasę BigInteger .
źródło
Moja wersja jest trochę bardziej zrozumiała, ponieważ moja znajomość języka C # nie jest tak wysoka. Używam tego algorytmu: http://easyguyevo.hubpages.com/hub/Convert-Hex-to-Decimal (przykład 2)
źródło
Konwertuj plik binarny na szesnastkowy
źródło
Metoda rozszerzenia służąca do konwersji tablicy bajtów na reprezentację szesnastkową. Powoduje to wypełnienie każdego bajtu zerami wiodącymi.
źródło
Oto moja funkcja:
źródło
Convert
metodę rozszerzenia, aby można było napisać:int hexa = Convert.ToHexadecimal(11);
=)Moje rozwiązanie jest trochę jak powrót do podstaw, ale działa bez użycia żadnych wbudowanych funkcji do konwersji między systemami liczbowymi.
źródło
źródło