You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下如何向文件末尾写入DWORD类型数值

解决DWORD数值以二进制4字节写入文件的问题

直接传递DWORD变量的地址给WriteFile即可,因为WriteFile的第二个参数LPCVOID本质是指向数据的常量指针,你需要提供要写入数据的内存起始地址,而非直接传递数值。

正确代码示例

DWORD size = 12314432;
DWORD bytesWritten; // 建议保留该变量,用于校验实际写入的字节数
BOOL ret = WriteFile(hFile, &size, sizeof(DWORD), &bytesWritten, NULL);

为什么之前的方法不对?

你用sprintf把数值转成了ASCII字符串,写入的是每个数字字符的ASCII编码(比如1234会被转成字符串"1234",对应的十六进制是31 32 33 34),这是文本形式的存储,并非数值的二进制表示。

额外说明

Windows系统默认是小端字节序,所以写入的4字节会按低字节在前的顺序存储。如果需要大端字节序(比如跨平台兼容),可以手动拆分字节:

DWORD size = 12314432;
unsigned char bytes[4] = {
    (unsigned char)((size >> 24) & 0xFF), // 高字节
    (unsigned char)((size >> 16) & 0xFF),
    (unsigned char)((size >> 8) & 0xFF),
    (unsigned char)(size & 0xFF)          // 低字节
};
DWORD bytesWritten;
BOOL ret = WriteFile(hFile, bytes, sizeof(bytes), &bytesWritten, NULL);

内容的提问来源于stack exchange,提问作者gmalesux111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:15:39