webForumDet fria alternativet

hex till base64

.NETur .NET

3 svar · 291 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

Har en kryptering som returnerar(base64):
NuZ5uF0MHtJ54nMc+79t/NR9GAmmaY3vUJu7fZyvww0=

Gör sen om denna till hex:
4e755a357546304d48744a35346e4d632b3739742f4e523947416d6d61593376554a7537665a79767777303d

Hur gör jag för att få tillbaka den till base64 från hex

fredrikMedlem sedan dec. 19991 072 inlägg
#2

Börja med att läsa tillbaka den till bytes, och sen göra om till hex igen, typ:

Dim bts() as byte = Convert.FromBase64("NuZ5uF0MHtJ54nMc+79t/NR9GAmmaY3vUJu7fZyvww0=")
Dim b() as byte
Dim hex as string
for each b in bts
hex += String.Format("{0:X2}", b) 
next
DinoMedlem sedan sep. 20011 914 inlägg
#3

Hade redan fått hjälp på annat håll, glömde att skriva det här.
Lösningen är nedan och kom från en Jon Skeet.

#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
fredrikMedlem sedan dec. 19991 072 inlägg
#4

Känns aningen som lite mycket kod för det...men men, det viktiga är förstås att det fungerar...! :)

126 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)