c# hex de bits de conversion
Je suis en train de convertir la représentation hexadécimale d'un nombre de 64 bits (par exemple, la chaîne "FFFFFFFFF"
) à la représentation binaire ("11111..."
).
J'ai essayé
string result = Convert.ToString(Convert.ToUInt64(value, 16), 2);
mais il en résulte une confusion erreur de compilateur:
La meilleure méthode surchargée match pour le Système.Convertir des.ToString(objet, Système.IFormatProvider)' a certains arguments non valides
Argument 2: impossible de convertir de 'int' à 'Système.IFormatProvider'
Jetez un oeil à stackoverflow.com/questions/74148/...
Comment est-ce que cela va les aider? L'OP n'est pas de demander à propos de la conversion en décimal, mais à une chaîne de caractères représentant le binaire.
Pourquoi à l'aide de
64 x F(hexadécimal) avec int64 donne -1, UINT donne 18446744073709551616
Comment est-ce que cela va les aider? L'OP n'est pas de demander à propos de la conversion en décimal, mais à une chaîne de caractères représentant le binaire.
Pourquoi à l'aide de
Convert.ToInt64
pas de travail?64 x F(hexadécimal) avec int64 donne -1, UINT donne 18446744073709551616
Convert.ToString(-1L, 2)
retourne "1111111111111111111111111111111111111111111111111111111111111111"
, de sorte que même si la valeur intermédiaire est mauvais, le résultat est le même.OriginalL'auteur santBart | 2012-02-28
Vous devez vous connecter pour publier un commentaire.
Il pourrait y avoir une meilleure solution, mais il faut vérifier si cela fonctionne:
Le moyen le plus pratique serait d'utiliser
Convertir.ToString(Int64, Int32)
, mais il n'y a pas de surcharge pour ulong. Une autre solution estConvertir.ToString(UInt64, IFormatProvider)
et écrire votre propre IFormatProvider. En regardant les exemples que j'ai trouvé un IFormatProvider que les formats de nombres en binaire, octal et hexadécimal représentation de chaîne: http://msdn.microsoft.com/en-us/library/system.icustomformatter.aspx.Le code a l'air très similaire à ce que j'ai donné, donc je pense que ce n'est pas une mauvaise solution.
OriginalL'auteur CodeZombie
Quel est le problème avec le code suivant?
À peu près ce que vous avez écrit (fixe la
ulong
àlong
cast), et renvoie ce que vous attendez.Edit:
récupéré cette réponse, car même si la
long
représentation est signé, la représentation binaire est en fait ce que vous attendez.L'OP a
Convert.ToUInt64
, pasConvert.ToInt64
(non signé, pas signé).Spot sur. même si le signés à long int écrit -1, c'est du binaire représentation est correcte.
OriginalL'auteur ken2k
Le meilleur choix est :
OriginalL'auteur Mahmut EFE
Si vous avez utilisé cette pour convertir la chaîne hexadécimale en BitArray alors la tâche de produire la représentation binaire est trivial:
OriginalL'auteur Candide
Voici une brute approche, pas de pancy 64bit limite:
OriginalL'auteur Pasi Savolainen