将十六进制字符串转换为相同格式的long

Convert hexadecimal string to long in the same format

我有这个代码:

string IDNumber = "0x0037D70D";

long x = 0x0037D70D; //Working

long x = long.Parse(IDNumber); //Error Input string was not in a correct format.

需要将上面的字符串 (IDNumber) 发送到 long y 并且应该保持变量格式和典型值,因为它以 0x 开头....与 IDNumber 字符串中的相同

请帮助我。

编辑:

我在DLL文件中有一个函数,这个函数接受一个数据类型为long的参数

如果我给这个长参数的值像 0x0037D70D 那么这个函数可以正常工作并完成所需的工作但是如果我给这个长参数以任何其他格式的值比如 3659533 函数就不起作用

string example1 = "0x0037D70D";
long example2 = 0x0037D70D;

最后,我得到了像 example1 这样的字符串格式的值,我想将其转换为像 example2 的格式,因为如果我的值像 example2 格式一样编写并保存在 long 变量中,那么就可以工作

更新: 问题解决了,我使用这个功能与外部硬件设备通信,在多次尝试设备挂起后,我休息了设备和@Kirill Polishchuk 为我工作建议的解决方案。

long l = Convert.ToInt64(IDNumber, 16);

您应该删除 0x 前缀:

long y = long.Parse(IDNumber.Replace("0x", ""), System.Globalization.NumberStyles.HexNumber);
long x = 0x0037D70D; //Working
Console.WriteLine(x.ToString("X")); //prints "37D70D", no prefix

我建议使用 Convert class:

long l = Convert.ToInt64(IDNumber, 16);