这是问题所在。
例如,我有一个字符串“2500”。它从字节数组转换为字符串。我必须将其转换为十进制(int)。这是我应该得到的:
string : "2500"
byte[] : {0x25, 0x00}
UInt16 : 0x0025 //note its reversed
int : 43 //decimal of 0x0025
我该怎么做?
答案 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);