[c#] conversion de chaîne 'string' vers chaîne 'décimal' et réciproquement

Soyez le premier à donner votre avis sur cette source.

Snippet vu 30 991 fois - Téléchargée 28 fois

Contenu du snippet

Un bon exemple valant mieux qu'une tonne de commentaires :

string szStr, szStr2, szStr3;

szStr = "abcdefghijklmnopqrstuvwxyz";
szStr2 = ConvertAsciiStringToHexaString (szStr);
szStr3 = ConvertHexaStringToAsciiString (szStr2);

szStr = "Unicode character Pi(\u03a0)";
szStr2 = ConvertUnicodeStringToHexaString (szStr);
szStr3 = ConvertHexaStringToUnicodeString (szStr2);

Source / Exemple :


/// <summary>
		/// Convert a string like 'abcdefghijklmnopqrstuvwxyz' to decimal string like '6162636465666768696A6B6C6D6E6F707172737475767778797A'
		/// ONLY UNICODE IN THIS FUNCTION
		/// </summary>
		/// <param name="_szStr">String to convert</param>
		/// <returns></returns>
		public string ConvertUnicodeStringToHexaString (string _szStr)
		{
			string szResult		= String.Empty;
			byte[] abytesText	= Encoding.Unicode.GetBytes(_szStr);

			foreach (byte a in abytesText)
			{
				if (a<16)
					szResult += "0" + a.ToString ("X");
				else
					szResult += a.ToString ("X");
			}
			return szResult;
		}

		/// <summary>
		/// Convert a string like '6162636465666768696A6B6C6D6E6F707172737475767778797A' to decimal string like 'abcdefghijklmnopqrstuvwxyz'
		/// ONLY UNICODE IN THIS FUNCTION
		/// </summary>
		/// <param name="_szStr">String to convert</param>
		/// <returns></returns>
		public string ConvertHexaStringToUnicodeString (string _szStr)
		{
			int		iOffset		= 0;
			string	szResult	= String.Empty;
			byte[]	abytesText	= new byte [_szStr.Length /2];

			for (int i = 0; i < _szStr.Length /2; i++)
			{
				abytesText [iOffset] = (byte)Int32.Parse(_szStr.Substring(i*2,2), System.Globalization.NumberStyles.HexNumber);
				iOffset++;
			}

			char[] asciiChars = new char[Encoding.Unicode.GetCharCount(abytesText, 0, abytesText.Length)];
			Encoding.Unicode.GetChars(abytesText, 0, abytesText.Length, asciiChars, 0);
			szResult = new string(asciiChars);

			return szResult;
		}

		/// <summary>
		/// Convert a string like 'abcdefghijklmnopqrstuvwxyz' to decimal string like '6162636465666768696A6B6C6D6E6F707172737475767778797A'
		/// ONLY ASCII IN THIS FUNCTION
		/// </summary>
		/// <param name="_szStr">String to convert</param>
		/// <returns></returns>
		public string ConvertAsciiStringToHexaString (string _szStr)
		{
			string szResult		= String.Empty;
			byte[] abytesText	= Encoding.ASCII.GetBytes(_szStr);

			foreach (byte a in abytesText)
			{
				if (a<16)
					szResult += "0" + a.ToString ("X");
				else
					szResult += a.ToString ("X");
			}
			return szResult;
		}

		/// <summary>
		/// Convert a string like '6162636465666768696A6B6C6D6E6F707172737475767778797A' to decimal string like 'abcdefghijklmnopqrstuvwxyz'
		/// ONLY ASCII IN THIS FUNCTION
		/// </summary>
		/// <param name="_szStr">String to convert</param>
		/// <returns></returns>
		public string ConvertHexaStringToAsciiString (string _szStr)
		{
			int		iOffset		= 0;
			string	szResult	= String.Empty;
			byte[]	abytesText	= new byte [_szStr.Length /2];

			for (int i = 0; i < _szStr.Length /2; i++)
			{
				abytesText [iOffset] = (byte)Int32.Parse(_szStr.Substring(i*2,2), System.Globalization.NumberStyles.HexNumber);
				iOffset++;
			}

			char[] asciiChars = new char[Encoding.ASCII.GetCharCount(abytesText, 0, abytesText.Length)];
			Encoding.ASCII.GetChars(abytesText, 0, abytesText.Length, asciiChars, 0);
				
			szResult = new string(asciiChars);
			return szResult;
		}

Conclusion :


Pour tous ceux qui utilisent du cryptage (AES par exemple qui a le don de produire des chaînes avec des caractères ASCII à la con), voilà comment comment convertir une chaîne vers sa valeur décimale lisible dans n'importe quel fichier TXT.

A voir également

Ajouter un commentaire

Commentaire

Messages postés
4
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
4 janvier 2009

Bonjour scoubidou944,

Merci pour ces beaux exemples. J'utilise ce site justement pour avoir pour un accés rapide à ce genre de bouts de code ou de classes , bien faits et trés utiles. Je promets de renvoyer la pareille avec un testeur de classes enfouies dans plusieurs dlls.
Cdlt,
Lucien

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.