• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[昨夜星辰] 【源码+思路】随机生成汉字 [复制链接]

1#
思路:
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可忽略。

源码:
  1. Function 随机生成汉字(位数)
  2. 随机生成汉字 = ""
  3. For 位数
  4. 随机生成汉字 = 随机生成汉字 & ChrW(生成随机数(&H4E00&, &H9FA5&))
  5. Next
  6. End Function
  7. Function 生成随机数(num1, num2)
  8. Dim L, U
  9. L = num1
  10. U = num2
  11. If num1 > num2 Then
  12. L = num2
  13. U = num1
  14. End If
  15. Randomize
  16. 生成随机数 = CLng(Int((U - L + 1) * Rnd + L))
  17. End Function
复制代码

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

最后编辑昨夜星辰 最后编辑于 2022-08-28 15:46:48
近期制作:
传奇私服各种反外挂插件版本挂机软件,可教可售
原神加速、连发辅助工具
天下3自动钓大鱼辅助工具

承接脚本定制,点击下方联系
QQ:250039815

交流群:101296478

2#

111111111111

3#

666

4#

支持一下!!







Yeah分享

5#

11111111

6#


7#

33333333333

8#

大幅度发生的

9#

看看谢谢分享

10#

33333333333

11#

1111111111111111

12#

如何随机生成汉字

13#

bucuo

学习下

14#

踩踩踩踩踩踩踩踩踩

15#

看看

看看看

16#

学习一下

17#

6666666666666666

18#

发的方法王菲菲

19#

Dim MyValue, Response
Randomize '初始化随机数生成器。

Do Until Response = vbNo
MyValue = Int((6 * Rnd) + 1) ' 产生 1 到 6 之间的随机数。
MsgBox MyValue
Response = MsgBox ("Roll again? ", vbYesNo)
Loop

20#

点赞

发新话题 回复该主题