Для этого требуется два шага:
- Преобразуйте обычную текстовую строку в массив байтов.< /li>
Преобразовать массив байтов в шестнадцатеричную строку.
< pre class="lang-cs Prettyprint-override">
Код: Выделить всё
string plainText = "Hello, World!";
byte[] bytes = Encoding.Default.GetBytes(plainText);
string hexadecimalString = Convert.ToHexString(bytes);
Код: Выделить всё
public static string ToHexString(string value, Encoding? encoding = null) =>
ToHexString(value.ToCharArray(), encoding);
public static string ToHexString(char[] value, Encoding? encoding = null) =>
Convert.ToHexString((encoding ?? Encoding.Default).GetBytes(value));
- выделит новый символ[].
Код: Выделить всё
ToCharArray() - выделит новый байт[]
Код: Выделить всё
GetBytes - выделит новую строку.
Код: Выделить всё
ToHexString
Код: Выделить всё
public static string ToHexString(ReadOnlySpan value, Encoding? encoding = null) =>
Convert.ToHexString((encoding ?? Encoding.Default).GetBytes(value));
Код: Выделить всё
public static string ToHexString(ReadOnlySpan value, Encoding? encoding = null) =>
Convert.ToHexString((encoding ?? Encoding.Default).GetBytes(value.ToArray()));
Код: Выделить всё
public static string ToHexString(string value, Encoding? encoding = null) =>
Convert.ToHexString((encoding ?? Encoding.Default).GetBytes(value));
public static string ToHexString(char[] value, Encoding? encoding = null) =>
Convert.ToHexString((encoding ?? Encoding.Default).GetBytes(value));
Итак, мой вопрос: когда правильно использовать ReadOnlySpan в качестве параметра метода, а не использовать более явные/перегруженные типы? Должен ли компромисс быть смещен в сторону удобства сопровождения и надежного API, опирающегося на неявное преобразование типов, или в сторону производительности? Есть ли какие-то рекомендации по этому поводу?
P.S. если вы считаете, что это заслуживает отрицательного голоса, будьте любезны объяснить, почему.
Подробнее здесь: https://stackoverflow.com/questions/784 ... aded-types
Мобильная версия