C# 字符串到十六进制,存储在int中
我现在有这个代码C# 字符串到十六进制,存储在int中,c#,string,int,C#,String,Int,我现在有这个代码 int MainBase = 0x4E4DBC; 我不希望它硬编码,所以我决定设置一个配置文件。所以我有一个带“4E4DBC”的字符串 我如何解析它,使它可以是int?我已经尝试过Byte.Parse和Convert.ToByte,但它们都会给我“太大”的错误。您可以使用以下方法: : 不要以整数形式存储内存位置,请使用IntPtr,这是有原因的。原因是IntPtr在x86和x64上都能工作,而int太小,无法存储64位指针(长),因此在切换平台时会遇到问题 使用上面的答案将
int MainBase = 0x4E4DBC;
我不希望它硬编码,所以我决定设置一个配置文件。所以我有一个带“4E4DBC”的字符串
我如何解析它,使它可以是int?我已经尝试过Byte.Parse和Convert.ToByte,但它们都会给我“太大”的错误。您可以使用以下方法:
:
不要以整数形式存储内存位置,请使用
IntPtr
,这是有原因的。原因是IntPtr
在x86和x64上都能工作,而int
太小,无法存储64位指针(长),因此在切换平台时会遇到问题
使用上面的答案将其解析为一个int
,然后使用
var somePtr=新的IntPtr(值)代码>
如果在x86上,指针将为4个字节,而在x64上,指针将分别为8个字节
此外,字节
仅为一个字节,因此永远无法存储4个字节的整数。这就是为什么你会在VS中出现“太大”的错误。你可以在上面找到信息。你应该查一下
int value = Convert.ToInt32("4E4DBC", 16);
Convert.ToInt32("4E4DBC", 16);