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

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

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.