Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# 字符串到十六进制,存储在int中_C#_String_Int - Fatal编程技术网

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);