2011-12-19 2 views
2

Я столкнулся с некоторыми функциями преобразования Base64 в .net (FromBase64.string и т. Д.). Что я хочу, для образца, у меня есть закодированная строка базы 64, какКак преобразовать base64-кодированный текст в шестнадцатеричный в VB.NET?

"48YwojCi4yaiow==". 

Мне нужно преобразовать эту строку в соответствующем шестнадцатеричном текст (образец означает «Thisistest» в шестнадцатеричном тексте) Ниже ссылка - онлайн-конвертер от base64 до шестнадцатеричного текста. Если вы укажете те же базовые 64 кодированные данные в ссылке, нажмите на конвертацию, то, что видно ниже «Шестнадцатеричный текст» - это то, что мне нужно.

http://www.hcidata.info/base64.htm 

Есть ли стандартная функция библиотеки в vb.net, которая делает это? Преобразование базы данных 64 в шестнадцатеричный текст?

+0

http://msdn.microsoft.com/en- us/library/system.convert.frombase64string.aspx –

+0

Base64 не имеет значения, любая строка в массив байтов, а затем BitConverter.ToString() с небольшим количеством форматирования выполнит эту работу. –

ответ

2

Вы должны будете использовать Convert.FromBase64String method сначала преобразовать строку в кодировке base64 в массив байтов.

Вы можете взять этот массив байтов и индивидуально преобразовать их в их эквивалентное шестнадцатеричное представление, используя перегрузку Byte.ToString, которая принимает спецификатор формата. Имеющиеся форматные спецификаторы документируются here, но вы хотите либо X or x for hexadecimal, в зависимости от того, хотите ли вы, чтобы буквы были заглавные или нет.

Вы можете инкапсулировать все это в метод расширения для класса String, если вы хотите скрыть все это для удобства использования. Например:

<System.Runtime.CompilerServices.Extension> _ 
Public Shared Function ConvertToHex(str As String) As String 
    ' Convert the specified base64-encoded string into an array of bytes. 
    Dim bytes As Byte() = Convert.FromBase64String(str) 

    ' Loop through each of the items in the array and convert 
    ' to their equivalent hexadecimal representations 
    Dim sb As New StringBuilder() 
    For Each b As Byte In bytes 
     sb.Append(b.ToString("X2")) 
    Next 
    Return sb.ToString() 
End Function 

В качестве альтернативы, можно исследовать с помощью BitConverter.ToString method вместо петли для преобразования каждого из значений в массиве байт до их эквивалентных представлений шестнадцатеричной строки. Это приведет к получению дефинированной строки шестнадцатеричных пар.

Я понятия не имею, какой метод «лучше» или более совершенен. Вам нужно будет профилировать код или выбрать то, что вы найдете более читаемым.

<System.Runtime.CompilerServices.Extension> _ 
Public Shared Function ConvertToHex(str As String) As String 
    ' Convert the specified base64-encoded string into an array of bytes. 
    Dim bytes As Byte() = Convert.FromBase64String(str) 

    ' Convert each of the items in the array to a hex string. 
    return BitConverter.ToString(bytes) 
End Function 

Если вы не хотите, черточки в строке, что BitConverter.ToString метод возвращает, вам необходимо удалить их:

returnString.Replace("-", String.Empty) 
0

Вы должны сначала преобразовать строку base64 в байты с Convert.FromBase64String. Затем вам нужно отдельно преобразовать байты в шестнадцатеричное представление.

Пример (C#, но вы получите идею)

string ToHexString(byte[] bytes) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach (byte b in bytes) sb.Append(b.ToString("x2")); 
    return sb.ToString(); 
} 
+0

Просто обратите внимание, не используйте форматирование blockquote для блоков кода, потому что оно игнорирует разрывы строк и не применяет подсветку синтаксиса. Вместо этого нажмите кнопку форматирования кода - ту, где фигурные скобки '{}'. –

+0

Хорошо, спасибо за информацию: P Я здесь новый. – dextrey

Смежные вопросы