Вопрос

Итак, у меня есть строка из 13 символов.

string str = "HELLOWORLDZZZ";

И мне нужно сохранить это как представление ASCII (HEX) в переменной UINT. Как мне это сделать?

Это было полезно?

Решение

Вы можете использовать Encoding.ASCII.GetBytes Чтобы преобразовать вашу строку в byte массив с кодированием ASCII (каждый персонаж берет один byte) Затем позвоните BitConverter.ToUInt32 чтобы преобразовать этот байтовый массив в uint. Анкет Однако как @Р. Бемроуз отмечается в комментариях, uint всего 4 byteS, так что вам нужно сначала сделать некоторое разделение вашего массива.

Другие советы

Посмотри на Convert.ToUInt32(string, int). Анкет Например:

uint parsed = Convert.ToUInt32(str, 16);
uint.Parse(hexString, System.Globalization.NumberStyles.HexNumber);

Я думаю, что это метод, который вы хотите

Convert.ToUInt32(yourHexNumber, 16);

Смотрите документацию здесь.

Посмотрите на мой комментарий, но если вы хотите просто преобразовать строку ASCII в HEX, что я подозреваю:

public string HexIt(string yourString)
{
    string hex = "";
    foreach (char c in yourString)
    {
        int tmp = c;
        hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
    }
    return hex;
}

Это преобразует ваш string (с представлением базы 16) до uint.

uint val = Convert.ToUInt32(str, 16);

Теперь я думаю, я понимаю, чего вы хотите в комментарии к ответам Bdukes.

Если вы хотите hex Код для каждого символа в строке вы можете получить его с помощью LINQ.

var str = "ABCD";
var hex = str.Select(c => ((int)c).ToString("X"))
    .Aggregate(String.Empty, (x, y) => x + y);

hex будет строка 41424344

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top