【源码+思路】随机生成汉字

按键精灵小Q 按键精灵小Q 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

作者:昨夜星辰

思路:
1、通过网上查阅的资料可知,汉字的Unicode编码范围为十六进制4E00~9FA5。
2、通过Randomize及Rnd函数,生成一个在汉字编码范围内的数字。
3、通过ChrW函数得到编码数字对应的汉字。

注:十六进制数4E00~9FA5,亦可写为十进制数19968~40869,出于教学目的,本帖不应用十进制写法。

由于涉及十六进制数,故需要用到&H来将十六进制转换为十进制。所以,在写代码之前,我们需要弄懂下面几点。

什么是十六进制数?
十六进制是一种基数为16的计数系统,是一种逢16进1的进位制。通常用数字0、1、2、3、4、5、6、7、8、9和字母A、B、C、D、E、F表示,其中A~F表示10~15,这些称作十六进制数。

十六进制数的应用范围?
在按键精灵中十六进制主要用于memory地址及RGB图色数据。图色数据可参考:【源码+思路】计算偏色之RGB篇

&H的作用是什么?
可以通过在数字前面添加前缀&H来表示十六进制数。例如,在十六进制计数法中,&H10表示十进制数16。亦可通过Hex函数将十进制数转换为十六进制数,例如Hex("16")得到十进制数10。

但是在使用&H时有一点务必要注意,&H是根据你输入的数据来自动调整数据为整型或长整型,而十六进制是由补码的方式来表达负数。规则为负数的补码是它本身的值每位求反,最后再加1。在整型情况下,十进制数24667的十六进制为605B,-24667则为9FA5。而长整型情况下,十进制数24667的十六进制为0000605B,-24667则为FFFF9FA5。比如&H9FA5,按照我们的想法应该得到十进制的40869,但却得到了-24667。通过TypeName(&H9FA5)可知返回的是整型(Integer),而非长整型(Long),故而发生了错误。解决方案是在数据末尾再加一个&,即&H9FA5&,其作用是将数据强制按照长整型进行运算,如此以来便能得到正确的结果。

注:0000605B亦可写作605B,&H9FA5&亦可写作&H00009FA5&,数字中前端的0可忽略。

源码:
 

Function 随机生成汉字(位数)

随机生成汉字 = ""

For 位数

随机生成汉字 = 随机生成汉字 & ChrW(生成随机数(&H4E00&, &H9FA5&))

Next

End Function

Function 生成随机数(num1, num2)

Dim L, U

L = num1

U = num2

If num1 > num2 Then

L = num2

U = num1

End If

Randomize

生成随机数 = CLng(Int((U - L + 1) * Rnd + L))

End Function

 


调用方法:
TracePrint 随机生成汉字(6)
调试结果:
脚本 我的脚本.Q ,第1行:匑鷳请媖鴔躕

原文地址:http://bbs.anjian.com/showtopic-701856-1.aspx

...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
按键精灵小Q
按键精灵小Q 按键精灵官方账号 按键精灵官方账号
按键精灵小Q 11 成员 188 内容