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

如何在MASM中创建UTF-16双字节字符串用于WinAPI及wsprintfW?

解决wsprintfW宽字符格式串定义及编译错误问题

问题原因

你遇到的error A2084:constant value too large,是因为错误的宽字符串定义方式导致汇编器无法正确处理常量。wsprintfW要求格式串是UTF-16编码的宽字符数组(每个字符占2字节),而原代码的写法既不符合汇编器对宽字符定义的语法,也没有正确将控制符(回车、换行)和终止符定义为双字节常量。

正确的宽格式串定义方法

在汇编中,直接使用dw伪指令定义每个宽字符(包括格式串内容、控制符、终止符),每个元素都会被汇编为2字节的UTF-16LE值:

; 定义wsprintfW所需的宽字符格式串
szDllFormat dw 'D','l','l','N','a','m','e',':',' ','%','s',13,10,0
  • 'D'到'%s'会被自动转为0x0044、0x006C这类双字节宽字符
  • 13对应宽字符回车符0x000D,10对应宽字符换行符0x000A
  • 最后的0是宽字符串终止符0x0000

验证与使用

定义完成后,将szDllFormat作为wsprintfW的格式串参数传入,生成的宽字符缓冲区即可直接用于WriteConsoleW输出,确保打印的是正确的Unicode宽字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:50:29