我目前有这个代码
int MainBase = 0x4E4DBC;
我不想硬编码,所以我决定设置一个配置文件。所以我有一个带有“4E4DBC”的字符串。
我将如何解析它以便它可以在 int 中?我已经尝试过 Byte.Parse 和 Convert.ToByte 但它们都给了我“太大”的错误。
Convert.ToInt32("4E4DBC", 16);
永远不要将内存位置存储在整数中,使用IntPtr
,它的存在是有原因的。原因是它IntPtr
适用于 x86 和 x64,而 anint
太小而无法存储 64 位指针(即 a long
),因此在切换平台时会遇到问题。
使用上面的答案将其解析为int
,然后使用类似的东西
var somePtr = new IntPtr(value);
如果在 x86 上,您的指针将分别为 4 个字节,在 x64 上分别为 8 个字节。
此外,abyte
只有一个字节,因此永远无法存储一个整数,即 4 个字节。这就是为什么您在 VS 中遇到“太大”错误的原因。您可以在此处找到有关C# 中的类型有多大的信息。你应该查一下。
您可以使用以下ToInt32
方法:
int value = Convert.ToInt32("4E4DBC", 16);