实例1:写PE查看工具项目中的字节转换
前段时间在写PE工具项目的时候,我们创建了EditText控件,当时我们需要将每个节名显示在控件中
在PE中存储的块名是以多字节字符串的形式存在的,但是在VS控件中,是以宽字节wchar_t的形式存储的,因此在我在开始直接使用SetWindowText函数时,显示的时候出现了乱码
因此我们需要对宽字符和多字节之间的转换
wsprintfW函数可以实现将多字节转为宽字节
详情参见:win32 - wsprintfW的使用
实例2:多线程作业:实现计时器
该程序在VS中使用sscanf函数和sprintf函数时出现了缓冲区不同的报错
经过反复测试,发现在虚拟机中我使用的是WinXP系统,VC+++6.0中TCHAR占用1个字节
在VS2022中TCHAR占用的是2字节,因此无法使用数字和字符串之间转换的两个函数
因此推断出在VC中使用的是多字节,VS中使用的是宽字节
sscanf函数和sprintf函数的使用参见:sscanf函数使用详解
解决办法:
1.需要先将EditText中的宽字符先转换成多字节字符串
2.将多字节字符串转换为数字
3.将数字实现自减后存入多字节字符串
4.将多字节字符串转为宽字节后再显示在控件中
这样就可以实现VC中的效果了