【发布时间】:2011-04-26 17:20:37
【问题描述】:
当我只有一个十六进制字符时,我知道如何将十六进制转换为整数。但我得到一个由两个字符组成的字符串。
我将两个字符都转换为十六进制:
String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()))
那么假设我有 01 和 3f 作为我的两个长度字符。我应该如何将它们转换为整数?我试着做
int length = int.Parse("013f", System.Globalization.NumberStyles.AllowHexSpecifier);
但显然这是不正确的。我什至取了这两个值,将它们连接在一起,然后尝试解析它们..这显然是不对的
我在尝试将这两个十六进制数解析为一个长度时是否做错了,或者服务器是否正在使用非标准长度系统获取信息。因为当第一个字符为 00 时,我可以得到正确的长度,比如 0001 之类的。我只是不确定我什么时候有两个长度字符。
编辑:经过反复试验,预期值为 491
更新二:
基本上,服务器为我提供了一个两个字符的长字符串,它告诉您以下数据的长度。
此特定属性的两个字符是 01 和 3f。以下数据有 491 个字符长,据我所知,它与 013f 没有任何关系,但我知道某处有一个,因为另一个应用程序正在使用这个完全相同的数据,但结果是正确的结果。
【问题讨论】:
-
长度的值是多少?
-
是什么让您认为这段代码不正确?它返回 319,即 0x013f 的十进制表示
-
您能提供更多数据吗?或者,1) 转换为十六进制,2) 交换最后两个数字,3) 加 100
-
@Pedery:你在寻找什么样的数据? ..我不能这样做,因为长度/值每隔几天就会改变一次。
-
再举一两个例子,这样我们就可以尝试了解这里实际发生了什么样的转换。显然,十六进制转换正在发生一些奇怪的事情,它可能让我们有机会破译您的算法结构。