草庐IT

python - ctypes:printf 返回长度,它是 int 而不是字符串

我正在使用ctypes并在Python2.5中加载msvcrt.dll。>>>fromctypesimport*>>>libname='msvcrt.dll'>>>libc=CDLL(libname)>>>libc.printf("HelloWorld\n")12>>>为什么不打印HelloWorld? 最佳答案 Whydoesn'titprintHelloWorld?当从控制台运行时,它在我的Python(ActiveState,2.6)中执行:>>>fromctypesimport*>>>libc=CDLL('msvcrt.dl

windows - Windows保护模式下的int 13h?

我们可以在Windows操作系统中使用Int13h(直接磁盘读/写)还是Windows保护模式不允许我们使用,如果可以,是否有工作轮次?提前致谢。 最佳答案 不,Windows子系统在引导期间初始化时会重新配置内核的BIOS中断处理,因为BIOS调用是16位的,而不是保护模式,因此int13h将无效。这就是为什么有些驱动程序是为完全绕过BIOS的32位保护模式编写的。这引出了一个问题-你为什么要这样做?Windows会在任何与BIOS通信的尝试中终止您的代码,就好像在说“嘿,你的代码,你作为Windows老板与我交谈,你不能绕过我,

windows - NASM 教程使用 int 80h,但这不适用于 Windows

我在完成FASM后开始使用NASMAssembler。我在Windows操作系统中对此进行编码。我的代码如下:section.data;Constantmsg:db"HelloWorld!"msg_L:equ$-msg;Current-msg1section.bss;Varialblesection.text;Codeglobal_WinMain@16_WinMain@16:moveax,4movebx,1;Wheretowrteitout.Terminalmovecx,msgmovedx,msg_Lint80hmoveax,1;EXITCOMMANDmovebx,0;NoErorin

c++ - 由于某种原因,我的 ram 上的 int 重量超过 32 位

好吧,我很好奇我的ram上的int是否真的占4个字节。所以我用这段代码做了1,000,000个整数。for(inti=0;i在我执行这行代码之前,我在前面放置了一个断点,以查看我开始时有多少headover。几乎没有头绪,我的程序从750kb开始。但在我完成循环后,如果一个int的重量为32位,程序本应为4,000kb,则该程序使用32,000kb。另一件值得一提的事情是,我正在使用ctrl+altk+delete方法来检查我的程序从ram中占用了多少空间,并且我在可视化上运行它C++2010表达。我也确信我电脑上的int是32位而不是64位,但这并不重要,因为即使它是64位而不是32

windows - 所有 Windows 版本都支持 Int64 吗?

如果我使用Int64类型的变量,它是否适用于所有Windows版本:win95、98、2000、nt、xp、vista、win7?无论是什么操作系统,它是32位还是64位?不管他们使用什么CPU?我只是想确定,我的程序可以在所有Windows版本上运行。 最佳答案 语言提供的数据类型的大小不受操作系统或硬件平台的限制。我可以在32位平台上使用64位整数(或者16位、8位或11位,就此而言)。 关于windows-所有Windows版本都支持Int64吗?,我们在StackOverflow

c++ - 如何将 Win32 HRESULT 转换为 int 返回值?

我正在用C++编写Windows控制台应用程序,并希望在成功时返回零,在失败时返回有意义的错误代码(即,S_OK应返回0,而E_OUTOFMEMORY应该返回一个不同于E_FAIL等的返回值)。以下方法可行吗?:intwmain(intargc,wchar_t*argv[]){HRESULThr=DoSomething();return(int)hr;}或者有更好的方法吗?也许是我忘记或找不到的标准Win32API函数或宏? 最佳答案 OP希望返回值为零以指示成功。有些成功代码是非零的,所以...if(SUCCEEDED(hr))r

c# - 如何使用 Windbg 检查管理应用程序的 Int64

当使用windbg调试托管进程时,如何查看Int64的值?例如,我有以下构造函数,它的第一个参数是Int64。ItemQuotequote=newItemQuote(1234567890987654L,"5mmSuperWidgets",1000,12999,true,false);我使用windbg调试器在上述构造函数中设置断点以检查其参数。反汇编结果如下。ChildSPIPCallSite0042f05c0043025aEncodingInformation.ItemQuote..ctor(Int64,System.String,Int32,Int32,Boolean,Boolea

windows - main(int argc, char** argv) 的荒谬值

我在旧的C++项目上启动了一个控制台应用程序。在main(intargc,char**argv)中设置断点开始program.exe-debug。根据调试器,argc变为32,argv中的字符串具有奇怪的随机值。继续执行时发生访问冲突,因为argv中的字符串指向无效值。这可能是什么原因造成的? 最佳答案 链接器设置了错误的入口点。对于普通的控制台应用程序,这应该是mainCRTStartup(调试器显示__tmainCRTStartup)。有一个无效的入口点导致main查看堆栈中“碰巧”的内容。发布这个是因为它不是很容易找到。

c# - 将字符串转换为 int 而不会丢失开头的零

我尝试了int.parse,和convertclass来将字符串转换为int。当我转换时。我在开头丢失了我不想要的0。例如:09999变成9999-我不想要这个。我想保持原样。我该怎么做? 最佳答案 myNumber.ToString("D5");//D表示“十进制”,5是您希望数字始终保留的指定位数。这将用零填充您的值,直到达到5位数。 关于c#-将字符串转换为int而不会丢失开头的零,我们在StackOverflow上找到一个类似的问题: https://

c# - 如何将 "int"分配给对象?

我们如何能够将整数分配给.NET中的对象?引用类型派生自System.Object,值类型派生自System.ValueType。那么,这怎么可能呢? 最佳答案 术语“装箱”非常不透明,但使用调试器很容易将实际发生的事情可视化。编写一个像这样的小控制台模式应用程序:usingSystem;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){intvalue=42;objectobj=value;}//在指定位置设置断点,然后按F5。当断点命中时