C# 以相同格式将十六进制字符串转换为长字符串
我有以下代码:C# 以相同格式将十六进制字符串转换为长字符串,c#,c#-4.0,C#,C# 4.0,我有以下代码: string IDNumber = "0x0037D70D"; long x = 0x0037D70D; //Working long x = long.Parse(IDNumber); //Error Input string was not in a correct format. 需要将上面的字符串(IDNumber)发送到长y,并且应保持变量格式和典型值,以0x…开头。。。。与IDNumber字符串中的相同 请帮帮我 编辑: 我在DLL文件中有一
string IDNumber = "0x0037D70D";
long x = 0x0037D70D; //Working
long x = long.Parse(IDNumber); //Error Input string was not in a correct format.
需要将上面的字符串(IDNumber)发送到长y,并且应保持变量格式和典型值,以0x…开头。。。。与IDNumber字符串中的相同
请帮帮我
编辑:
我在DLL文件中有一个函数,这个函数接受一个长数据类型的参数 如果我给这个长参数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
类:
long l = Convert.ToInt64(IDNumber, 16);
此副本回答了您的问题:请包括您收到的错误。@Ňɏssa Pøngjǣrdenlarp不是这样的,因为我希望在长变量中保留十六进制作为其值,而不将其转换为integer@John我得到的错误是输入字符串的格式不正确。
long
是“long integer”的缩写。十六进制是二进制数据的字符串表示形式。这将十六进制转换为整数,结果将是3659533,而不是0x0037D70D@WaleedELerksosy…这到底是怎么回事。你可能还想做什么?如果您想要十六进制(字符串)格式,为什么要将其转换为长格式?我在DLL文件中有函数,此函数接受一个数据类型为long的参数如果我给此参数0x0037D70D这样的值,则函数正常工作并执行所需的任务,但如果我使用3659533这样的任何其他格式执行,则函数不工作字符串example1=“0x0037D70D”;长示例2=0x0037D70D;最后我得到了字符串格式的值,比如example1,我想把它转换成example2,因为如果我把值写成example2,那么working@John我更新了问题:)谢谢,问题解决了:)