Одна проблема связана с самой концепцией "шестнадцатеричного представления [строки]".
Строка - это последовательность символов . То, как эти символы представляются как отдельные биты, зависит от кодировки. «Нативной» кодировкой для .NET является UTF-16, но обычно достигается более компактное представление (при сохранении возможности кодировать любую строку) с использованием UTF-8.
Вы можете использовать Encoding.GetBytes
, чтобы получить закодированную версию строки после того, как вы выбрали подходящую кодировку - но факт, что равен , этот выбор - Причина в том, что не так много API-интерфейсов, которые переходят прямо из строки в base64 / hex или выполняют шифрование / хеширование непосредственно в строках. Любые такие API, которые существуют do , почти наверняка будут выполнять «кодирование в массив байтов, выполнение соответствующих двоичных операций, декодирование непрозрачных двоичных данных в hex / base64».
(Это заставляет меня задуматься, не стоит ли писать вспомогательный класс, который может принимать кодировку, Func<byte[], byte[]>
и формат вывода, такой как hex / base64, - который может представлять произвольную двоичную операцию, примененную к строке .)