如何将INT转换为来自GetExitCodeProcess [C#]的DWORD返回码

时间:2009-11-25 19:21:47

标签: c#

我使用GetExitCodeProcess(processInfo.hProcess,out returnCode)作为C#中的p / invoke来获取我使用CreateProcess开始的进程的转向代码 - 一切正常......

这是代码:

UInt32 returnCode = 0xFFFFFFFF;     // default
GetExitCodeProcess(processInfo.hProcess, out returnCode);

问题是返回代码本身...我正在启动的应用程序返回DWORD中的代码,例如它返回0XB2100000但returnCode有2987393024(这是正确的INT转换)。

现在,我想显示(记录到我的跟踪文件)DWORD中的值(这是我们习惯的) - 无论如何我可以这样做?

谢谢,

4 个答案:

答案 0 :(得分:1)

像这样记录returnCode

String.Format("0x{0:X8}", returnCode)

returnCode.ToString("X8").Insert(0, "0x")

此问题也在此处讨论:

c# convert int to hex and back again

答案 1 :(得分:1)

似乎只需将其转换为十六进制形式,如下所示:

    returnCode.ToString("X8");

或者像这样:

Console.WriteLine("The error code was {0:X8}.", returnCode);

答案 2 :(得分:0)

C#中的DWORD将是一个uint(UInt32)。

答案 3 :(得分:0)

DWORD和INT是相同的东西*。您想知道的是,数字是以10-base还是base-16表示。但是,它们仍然是相同的数字。 32 === 0x20,它们是相同的,甚至不会自动转换为彼此。通常当你关心基数时,你真正想要的是按位运算(查找运算符&,|和〜)。

*是的,我知道DWORD是无符号的,INT是签名的。