C#:将字符串格式的UInt16转换为整数(十进制)

时间:2009-04-25 20:16:35

标签: c#

这是问题所在。

例如,我有一个字符串“2500”。它从字节数组转换为字符串。我必须将其转换为十进制(int)。

这是我应该得到的:

string : "2500"
byte[] : {0x25, 0x00}
UInt16 : 0x0025 //note its reversed
int    : 43     //decimal of 0x0025

我该怎么做?

4 个答案:

答案 0 :(得分:1)

从十六进制字符串转换为UInt16为UInt16.Parse(s, NumberStyles.AllowHexSpecifier)

但是你需要编写一些代码来执行“两位数块的反转”。如果您可以控制从字节数组生成字符串的代码,那么执行此操作的一种方便方法是反向构建字符串,例如通过遍历数组从长度 - 1 向下到0而不是在正常的向上方向。或者,假设您知道它只是一个4个字符的字符串,s = s.Substring(2, 2) + s.Substring(0, 2)就可以了。

答案 1 :(得分:1)

最好使用Convert.ToUInt16明确指定所需的基数。

然后,您可以使用IPAddress.HostToNetworkOrder翻转它(虽然您必须将其转换为int16,然后将结果转换回uint16。

答案 2 :(得分:1)

有一个特殊的转换类:转换 要从字符串转换为uint16,请使用以下方法:Convert.ToUInt16

有关int.parse和Convert.ToInt32的区别在this

中有解释

和Convert.ToUInt16 here

的msdn网站

答案 3 :(得分:1)

假设你的字符串总是4位数。 您可以使用一个字符串变量,但我使用多个字符串变量以便于阅读。

string originalValue = "2500";
string reverseValue = originalValue.Substring(2, 2) + originalValue.Substring(0, 2);
string hexValue = Convert.ToUInt16(reverseValue, 16).ToString();
int result = Convert.ToInt32(hexValue, 10);