因此,我有13个字符的字符串。

string str = "HELLOWORLDZZZ";

我需要将其作为ASCII表示(HEX)存储在UINT变量中。我该怎么做呢?

有帮助吗?

解决方案

您可以使用 Encoding.ASCII.GetBytes 将您的字符串转换为 byte 带有ASCII编码的数组(每个字符 byte)。然后打电话 BitConverter.ToUInt32 将该字节数组转换为 uint. 。但是,如 @R。 Bemrose 在评论中指出了 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字符串转换为十六进制,这就是我怀疑的:

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