关于汉字加密的一个比较菜的问题

longnail 2003-10-10 10:38:51
请教一个比较菜的问题:
vb中,汉字如何转化为AscII码,用asc()转化的是负数,且数字比较大不容易运算,而其中一个汉字包括两个字节,同时也可以转化为两个ASC码,如果用到文件读二进制数的get语句,可以每次读一个字节,这样一个汉字可以转化为两个ASC码,比方说“电”可以转化为181,231两个ASC码形式的数字,但不可以用chr(181)+chr(231)返回为汉字“电”,不知VB上可有这样的函数返回?? 请斑竹赐教!!!

还有:如果用到ASCB(leftB("电",1,1))函数时转化的ASC码数字等于53 为什么与上面的181不一样呢??
...全文
65 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
captainivy 2003-10-25
  • 打赏
  • 举报
回复
Asc(Trim("电"))=-18969
Chr(Val("-18969"))="电"

可以还原
pigsanddogs 2003-10-11
  • 打赏
  • 举报
回复
还有:如果用到ASCB(leftB("电",1,1))函数时转化的ASC码数字等于53 为什么与上面的181不一样呢??
ascb(midbb("电",1,1) & ascb(midb("电",2,1)是取内存,即unicode编码
asc("电") 是取汉字内码, asc函数是取汉字内码,ascb函数是取内存
Gelim 2003-10-11
  • 打赏
  • 举报
回复
1 使用以下方法可以解决你的问题

Dim a As String
Dim b() As Byte
Dim c As String

a = "中国人民解放军!121"

b = StrConv(a, vbFromUnicode) '将汉字以二进制的形式保存在b中

c = StrConv(b, vbUnicode) '将二进制的数据还原成汉字在这里c=a

2 如果是DBCS系统,chr(181*256+231)返回为汉字“电”,看说明如下:

Chr 函数


返回 String,其中包含有与指定的字符代码相关的字符 。

语法

Chr(charcode)

必要的 charcode 参数是一个用来识别某字符的 Long。

说明

0 到 31 之间的数字与标准的非打印 ASCII 代码相同。例如,Chr(10) 可以返回换行字符。charcode 的正常范围为 0 – 255。然而,在 DBCS 系统,charcode 的实际范围为 -32768 到 65535。

注意 ChrB 函数作用于包含在 String 中的字节数据。ChrB 总是返回一个单字节,而不是返回一个字符,一个字符可能是一个或两个字节。ChrW 函数返回包含 Unicode 的 String,若在不支持 Unicode 的平台上,则其功能与 Chr 函数相同。
kmzs 2003-10-10
  • 打赏
  • 举报
回复
直接以二进制方式输出,也就是存为数字,解密后读入Byte数组输出为文本
zjcxc 2003-10-10
  • 打赏
  • 举报
回复
一个汉字由两个字节组成.

用asc("电")是取得电的ascii,用ascb("电")是取得电的第一个字节的ascii
两者当然不同.
海牛 2003-10-10
  • 打赏
  • 举报
回复
直接以二进制方式输出不就行了!
vcar 2003-10-10
  • 打赏
  • 举报
回复
用chrb(181)+chrb(231),关于基于字节的字串符操作,一般都是在常规函数后加 b
flc 2003-10-10
  • 打赏
  • 举报
回复
xuexi

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧