Вы можете вызвать следующую функцию с помощью шестнадцатеричной строки и вернуть «Hello». Обратите внимание, что функция не проверяет ввод, вам нужно добавить подтверждение, если вы не уверены, что вход действителен.
Private Function HexToString(ByVal hex As String) As String
Dim result As String = ""
For i As integer = 0 To hex.Length - 1 Step 2
Dim num As Integer = Convert.ToInt32(hex.Substring(i, 2), 16)
result &= Chr(num)
Next
Return result
End Function
Джеймс Торп отмечает в своем комментарии, что было бы более целесообразно использовать Encoding.UTF8.GetString преобразовать обратно в строку, как это обратная сторона методы, используемой для создания шестнадцатеричной строки в первом место. Я согласен, но поскольку мой первоначальный ответ был уже принят, я не решаюсь изменить его, поэтому добавляю альтернативную версию. Применяется примечание о проверке пропущенного ввода.
Private Function HexToString(ByVal hex As String) As String
Dim bytes(hex.Length \ 2 - 1) As Byte
For i As Integer = 0 To hex.Length - 1 Step 2
bytes(i \ 2) = Byte.Parse(hex.Substring(i, 2), System.Globalization.NumberStyles.HexNumber)
Next
Return System.Text.Encoding.UTF8.GetString(bytes)
End Function
Рассмотрим с помощью функции [ 'ChrW'] (https://msdn.microsoft.com/en-us/library/613dxh46%28v=vs.90%29.aspx), если вы собираетесь пройдите по этому маршруту, чтобы поддерживать Unicode. Имейте в виду, что эти функции - похмелье от VB6, но вам лучше использовать ['Encoding.UTF8.GetString'] (https://msdn.microsoft.com/en-us/library/744y86tc%28v=vs .110% 29.aspx), так как это «противоположное» действие того, что использовалось для получения байтов в первую очередь. –
@JamesThorpe: Я согласен и добавил альтернативный код в свой ответ. Спасибо. – Blackwood