滴水逆向win32学习笔记1

一、字符编码

基本介绍

首先介绍了ASCII码,但是除美国外还需要显示其他字符,所以在ASCII码扩展表的基础上引入了GB2312之类的编码。由于每个国家有自己的一套扩展表,所以还是会出现问题。那怎么办呢?
采用unicode编码,编码范围是0-010FFFF,任何一个符号都能在编码表中体现。

关于utf-16、utf-8和unicode的关系

unicode只告诉了字符如何编码,没有解决编码以何种方式存储。举个例子,汉字的unicode编码为4E 2D,另一个汉字的编码为1 AB CD,或者字符A的编码为41,这些字符如何存储呢?
utf-16编码以16位无符号整数为单位,也就是二个字节为一组。如果编码只有一个字节,前面补零。如果有三个字节,那就凑齐四个。
在这里插入图片描述字utf-16编码。
utf-16这样的存储方式比较简单,但是对于网络传输而言,如果单纯的传输字母数字类,只占一个字节的符号时,会造成空间的浪费(由于补零,导致一个字节变成两个字节)。于是出现了utf-8编码。
utf-8遵循下面的规则:

unicode编码(16进制)utf-8字节流(二进制)
000000-00007F0xxx xxxx
000080-0007FF110x xxxx 10xx xxxx
000800-00FFFF1110 xxxx 10xx xxxx 10xx xxxx
010000-10FFFF1111 0xxx 10xx xxxx 10xx xxxx 10xxxxxx

首先查看字符在什么范围内,然后进行转换。还是字,4E 2D000800-00FFFF范围内,0100 1110 0010 1101转换的结果就是 1110 0100 1011 1000 1010 1101,转换成16进制 E4 B8 AD
在这里插入图片描述

BOM头

为了让计算机知道一个文件是按照什么方式存储的,需要在文件的头部添加表示,这个东西叫BOM。
utf-8 EF BB BF
utf-16 小端存储 FF FE
utf-16 大端存储 FE FF

二、宽字符

基本介绍

我们在vs中写程序,如果默认的字符集为ASCII,那么在定义一个字符串的时候,会按照gb2312来进行编码。
在这里插入图片描述如果使用宽字符集,则使用utf-16,注意字符串结尾00占两个字节。
在这里插入图片描述

常用函数

charwchar_t
printfwprintf控制台打印
strlenwcslen长度
strcpywcscpy字符串复制
strcatwcscat拼接
strcmpwcscmp比较
strstrwcsstr查找

三、Win32 API中的宽字符

什么是win32 API

主要是存放c:\windows\system32下面的所有dll。64位系统和32位系统都在这个文件夹下,64位系统中32位的dll在C:\Windows\SysWOW64中。
几个重要的dll

  1. Kernel32.dll。最核心的功能模块,比如内存管理、进程和线程相关的函数。
  2. User32.dll。是Windows用户界面相关应用程序接口,如创建窗口和发送消息。
  3. GDI32.dll。图形设备接口,用于画图和显示文本。

messagebox函数

具体看文档吧,没什么好写的了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值