webForumDet fria alternativet

string2hex och viceversa?

3 svar · 385 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#1

Finns det någon inbyggd funktion i .net för det eller får man skapa en själv?

DinoMedlem sedan sep. 20011 918 inlägg
#2

Använder denna, som jag fick av någon jag inte kommer på vem det var.

        #region StringToHex
        public static string StringToHex(string input)
        {
            StringBuilder sb = new StringBuilder();
            byte[] inputBytes = Encoding.UTF8.GetBytes(input);

            foreach(byte b in inputBytes)
            {
                sb.Append(string.Format("{0:x2}", b));			
            }

            return sb.ToString();
        }
        #endregion

        #region HexToString
        private static int ParseHexDigit(char c)
        {
            if(c >= '0' && c <= '9')
                return c-'0';

            if(c >= 'a' && c <= 'f')
                return c-'a'+10;

            if(c >= 'A' && c <= 'F')
                return c-'A'+10;

            throw new ArgumentException("Invalid hex character");
        }
    
        public static string HexToString(string hex)
        {
            char[] result = new char[hex.Length/2];
        
            int hexIndex = 0;
            for (int i=0; i < result.Length; i++)
                result[i] = (char)(ParseHexDigit(hex[hexIndex++])*16 + ParseHexDigit(hex[hexIndex++]));

            return new string(result);
        }
        #endregion
Jesper TMedlem sedan nov. 20017 058 inlägg
#3

Tack, skall kolla på det.

emissionMedlem sedan dec. 19996 095 inlägg
#4

Använd gärna de inbyggda funktionerna för själva konverteringsbiten (det behövs fortfarande lite kod för att kunna hantera hela strängar, precis som Dinos kod visar)

//Från hex till int
int a=int.Parse("a1",System.Globalization.NumberStyles.HexNumber);

//och tillbaka
string b=a.ToString("X")
Genererad på 510 ms · cache AV · v20260730165559-full.f96bc7eb