Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 十六进制到整数_C#_Decimal_Hex - Fatal编程技术网

C# 十六进制到整数

C# 十六进制到整数,c#,decimal,hex,C#,Decimal,Hex,当我只有一个十六进制字符时,我知道如何将十六进制转换成整数。但是我得到一个由两个字符组成的字符串 我正在使用以下命令将两个字符转换为十六进制: String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString())) 那么让我们假设我有01,和3f作为我的两个长度字符。我应该如何将它们转换为整数?我试过了 int length = int.Parse("013f", System.Globalization.NumberSty

当我只有一个十六进制字符时,我知道如何将十六进制转换成整数。但是我得到一个由两个字符组成的字符串

我正在使用以下命令将两个字符转换为十六进制:

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没有任何关系,但我知道某个地方有一个,因为另一个应用程序正在使用完全相同的数据,但结果是正确的。

问题到底出在哪里还不清楚

十六进制值
0x013F
为十进制
319
。虽然我会使用
NumberStyles.HexNumber
而不是
NumberStyles.allowehexspecifier
,但您的代码对此进行了正确的计算:

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

您希望将
0x013F
转换为什么号码?

问题出在哪里还不清楚

十六进制值
0x013F
为十进制
319
。虽然我会使用
NumberStyles.HexNumber
而不是
NumberStyles.allowehexspecifier
,但您的代码对此进行了正确的计算:

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


你希望转换成什么数字?

你也可以使用Convert.ToInt32()方法:我就是这么做的,结果是319,我想这不是我需要的长度。@Tommy:那你为什么不告诉我们你期望的结果呢,因为它显然不是一个严格的十六进制到十进制的转换?@Tommy:0x13f=319,你用它作为Convert.ToInt32(“013f”,16)?经过多次尝试和错误,我认为我期望的长度是491。你也可以用Convert.ToInt32()方法:这就是我所做的,我想319的长度不是我所需要的。@Tommy:既然它显然不是严格的十六进制到十进制的转换,那你为什么不告诉我们你期望的结果呢?@Tommy:0x13f=319,你用它作为Convert.ToInt32(“013f”,16)?经过多次尝试和错误,我想我期望的长度是491。你得到的长度值是多少?是什么让你认为这个代码不正确?它返回319,这是0x013FCF的十进制表示形式。您能为我们提供更多数据吗?或者,1)转换为十六进制,2)交换最后两个数字,3)添加100@Pedery:您正在查找什么类型的数据。。我不能这样做,因为长度/值每隔几天就改变一次。再举一两个例子,让我们试着了解这里实际发生了什么样的转换。很明显,十六进制转换发生了一些奇怪的事情,这可能给我们提供了破译算法结构的机会。长度的值是多少?是什么让你认为这段代码不正确?它返回319,这是0x013FCF的十进制表示形式。您能为我们提供更多数据吗?或者,1)转换为十六进制,2)交换最后两个数字,3)添加100@Pedery:您正在查找什么类型的数据。。我不能这样做,因为长度/值每隔几天就改变一次。再举一两个例子,让我们试着了解这里实际发生了什么样的转换。很明显,十六进制转换发生了一些奇怪的事情,这可能给我们提供了破译算法结构的机会。