C # преобразовать строку в Uint - PullRequest
6 голосов
/ 17 ноября 2010

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

string str = "HELLOWORLDZZZ";

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

Ответы [ 7 ]

14 голосов
/ 17 ноября 2010

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

uint parsed = Convert.ToUInt32(str, 16);
11 голосов
/ 17 ноября 2010

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

1 голос
/ 17 ноября 2010

См. Мой комментарий, но если вы хотите просто преобразовать строку ASCII в шестнадцатеричный код, что я и подозреваю:

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;
}
1 голос
/ 17 ноября 2010

Я думаю, что этот метод вам нужен

Convert.ToUInt32(yourHexNumber, 16);

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

1 голос
/ 17 ноября 2010
uint.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
0 голосов
/ 17 ноября 2010

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

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

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

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

0 голосов
/ 17 ноября 2010

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

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