所以,我有一个由13个字符组成的字符串。
string str = "HELLOWORLDZZZ";
我需要将此内容以ASCII表示(十六进制)存储在一个uint变量中。我该怎么做?
所以,我有一个由13个字符组成的字符串。
string str = "HELLOWORLDZZZ";
我需要将此内容以ASCII表示(十六进制)存储在一个uint变量中。我该怎么做?
Encoding.ASCII
.
GetBytes
将字符串转换为使用ASCII编码的byte
数组(每个字符占用一个byte
)。然后,调用BitConverter.ToUInt32
将该byte
数组转换为uint
。但是,正如@R. Bemrose在评论中所指出的那样,uint
仅由4个byte
组成,因此您需要对数组进行一些分区处理。01000001 01000010 01000011 01000100
,在十进制中为“1094861636”,这是uint
包含的值。 - jballBitConverter.ToUInt32
是小端字节序,所以输入 "ABCD"
的正确十进制值是 1145258561
。您可以在调用 BitConverter.ToUInt32
之前反转数组,然后您将获得我上面给出的十进制值,对应于十六进制的 41424344
。 - jballuint.Parse(hexString, System.Globalization.NumberStyles.HexNumber);
看我的评论,但如果你只是想将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;
}
这将把您的 字符串
(使用 Base 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