滴水逆向_Win32---宽字符

什么是ASCII码?

ASCII码分为ASCII码表和扩展ASCII码表,其中ASCII码表从 0000 0000 到 0111 1111;扩展ASCII码表从 1000 0000 到 1111 1111

而中文字符则占据两个字节,由两个扩展ASCII码表拼成一个中文字符。因此,如果需要找类似 " china中good " 字符串的中文字符,则可以通过判断出形如 " 1xxx xxxx 1xxx xxxx "的数据即为一个中文字符

但是ASCII码表存在许多缺点:
1. 不止中文字符由两个扩展ASCII码表拼成,日文韩文等语言亦是如此,也就是说一个形如 " 1xxx xxxx 1xxx xxxx "的数据可能编译出多种字符,容易造成乱码

Tips:乱码的本质就是一个值对应多个字符

2. 判断字符数量的时候会将一个中文之类的字符判断成两个字符,需要另写额外的程序进行判断

什么是Unicode编码?

基于以上原因,Unicode组织推行出了Unicode标准,以适应世界范围内的所有国家的常用字符,Unicode字符集的编码范围是 0x0000 - 0x10FFFF

但是,Unicode字符集的编码范围过大就导致一个字符需要1到3个字节进行表示,但是计算机无法判断当前字符需要几个字节。所以,UTF-8、UTF-16还有UTF-32就因此出现。UTF后面的数字表明至少使用多少个比特位来存储字符,也就是说,UTF-8至少需要1个字节存储字符,UTF-16至少需要2个字节,而UTF-32至少需要4个字节

至于GB2312编码,下面一幅图可以清楚分析其兼容性:
在这里插入图片描述
图片来源

使用拓展ASCII编码表 以00(\0)结尾,而使用UNICODE编码表 以00 00(\0\0)结尾

什么是Win 32 API?

API即为应用程序接口,主要是存放在 C:\WINDOWS\system32 下面所有的dll

几个重要的dll

Kernel32.dll:最核心的功能模块,比如管理内存、进程和线程相关的函数等
User32.dll:是Windows用户界面相关应用程序接口,如创建窗口和发送消息等
GDI32.dll:全称是Graphical Device Interface(图形设备接口),包含用于画图和显示文本的函数

GetLastError函数

假设这里有个Win32API MessageBox出错了,可以用这个函数去查,接收类型为DWORD
在这里插入图片描述
然后得到一个索引(此处的索引是1400),把这个数字拿到文档里面查GetLastError函数,可以查到1400对应的错误原因
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值