【问题标题】:hexadecimals to integer十六进制转整数
【发布时间】: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:你在寻找什么样的数据? ..我不能这样做,因为长度/值每隔几天就会改变一次。
  • 再举一两个例子,这样我们就可以尝试了解这里实际发生了什么样的转换。显然,十六进制转换正在发生一些奇怪的事情,它可能让我们有机会破译您的算法结构。

标签: c# decimal hex


【解决方案1】:

目前还不清楚问题是什么。

十六进制值0x013F 是十进制319。您的代码对此进行了正确评估,尽管我会使用 NumberStyles.HexNumber 而不是 NumberStyles.AllowHexSpecifier

int length = int.Parse("013f", NumberStyles.HexNumber);

您希望0x013F 转换为什么数字?

【讨论】:

  • 也可以使用 Convert.ToInt32() 方法:msdn.microsoft.com/en-us/library/1k20k614.aspx
  • 这就是我正在做的事情,我认为这不是我需要的长度。
  • @Tommy:那你为什么不告诉我们你期望的结果,因为它显然不是一个简单的十六进制到十进制转换?
  • @Tommy: 0x13f = 319,你用它作为Convert.ToInt32("013f", 16)吗?
  • 经过大量试验和错误后,我认为我期望的长度是 491。
猜你喜欢
  • 2010-10-16
  • 2014-04-16
  • 2017-08-12
  • 1970-01-01
  • 2016-12-04
  • 2013-09-20
  • 2011-08-05
相关资源
最近更新 更多