.版本 2
.DLL命令 常规的宽字符到多字节, 整数型, , "WideCharToMultiByte"
.参数 CodePage
.参数 dwFlags
.参数 lpWideCharStr, 字节集, , 你可以把鼠标放在“传址”那里好好读一下,所谓的“数据地址”,就是这个数据保存在内存中的位置,某些语言称之为“指针”
.参数 cchWideChar
.参数 lpMultiByteStr, 文本型, , 也就是说,字节集、文本型 这个选不选传址,传递的都是指针(比如地址 12345678H),而不是里面实际的数据
.参数 cchMultiByte
.参数 lpDefaultChar
.参数 lpUsedDefaultChar
.DLL命令 特别的宽字符到多字节, 整数型, , "WideCharToMultiByte"
.参数 CodePage
.参数 dwFlags
.参数 lpWideCharStr, , , 对应上面看看,不用觉得这样就不能运行
.参数 cchWideChar
.参数 lpMultiByteStr
.参数 cchMultiByte
.参数 lpDefaultChar
.参数 lpUsedDefaultChar
.版本 2
.支持库 spec
.子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行
.局部变量 测试数据1, 字节集
测试数据1 = { 217, 143, 234, 83, 47, 102, 0, 78, 229, 83, 75, 109, 213, 139, 0, 0 }
调试输出 (U2A_常规的 (测试数据1))
' 一些皆整数
调试输出 (U2A_特殊的 (测试数据1))
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 U2A_常规的, 文本型
.参数 unicode, 字节集
.局部变量 szAnsi, 文本型
.局部变量 dwLen
' 宽字符就是常说的 UNICODE,多字节可以叫 ANSI 或 GB2312/GBK,对于国人来说
dwLen = 常规的宽字符到多字节 (0, 0, unicode, -1, “”, 0, 0, 0)
' UNICODE 里两个字节表示一个字符,ANSI 里一个就表示一个,所以上一句取得的长度是“转换后”ANSI 的长度,不用变就行
' 但是你要是写 A2U,就是 ANSI 转 UNICODE,是另一个 API,获取的是宽字符的字符数(一个宽字符得用俩字节表示),所以就要把缓冲区申请的 dwLen*2
szAnsi = 取空白文本 (dwLen)
' 为啥需要缓冲区,看API,你传递给API的不是什么文本或字节集,都是它们的地址,你要得到的文本地址在哪呢?你就得先划出这么一块内存给 API
常规的宽字符到多字节 (0, 0, unicode, -1, szAnsi, dwLen, 0, 0)
返回 (szAnsi)
.子程序 U2A_特殊的, 文本型, , 什么是一些皆整数
.参数 unicode, 字节集, , 这里的参考跟 API 里的传址意思一样,鼠标放上去读一读
.局部变量 szAnsi, 文本型
.局部变量 dwLen
dwLen = 特别的宽字符到多字节 (0, 0, 取变量数据地址 (unicode), -1, 0, 0, 0, 0) ' 如果你能理解 API 里传址那句的意思,就知道为什么我这样声明 API,这样传递数据,而且可以执行了
szAnsi = 取空白文本 (dwLen)
特别的宽字符到多字节 (0, 0, 取变量数据地址 (unicode), -1, 取变量数据地址 (szAnsi), dwLen, 0, 0)
返回 (szAnsi)