baitang36 发表于 2024-6-18 14:48:55

[原创]纯lisp实现最高效base64编码解码

本帖最后由 baitang36 于 2024-6-18 20:44 编辑

纯算法实现base64编码解码 - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)

纯lisp实现更高效的base64编码解码 - AutoLISP/Visual LISP 编程技术 - AutoCAD论坛 - 明经CAD社区 - Powered by Discuz! (mjtd.com)
看了以上两个帖子,觉得已经非常不错了。
但觉得还有点慢,怎么办?上汇编,只有汇编语言写的东西才可以用最。最快的代码一定是汇编,别的语言最终执行的机器码也相当于汇编。
汇编语言的试验代码很简单

.data
    pbBinary db256 dup (0)    ; buffer for output
    newstr1 db256 dup (0)   
    pszString db "1234567890123456789012",0
            db 100 dup(0)
   cchString    dd 22
   dwFlags      dd 1
   pcbBinary    dd 36
   pdwSkip      dd 0
   pdwFlags   dd 0
   pcbBinary1   dd 22
.code
start:
   invoke CryptStringToBinaryA,addr pszString, 22,1, 0,addr pcbBinary,0,0
   invoke CryptStringToBinaryA,addr pszString, 22,1, addr pbBinary,addr pcbBinary,0,0;解密成功,输出二进制字符串
   invoke CryptBinaryToStringA,addr pbBinary,16,1,addr newstr1, addr pcbBinary1   ;加密                     
   invoke ExitProcess,eax
end start


试验成功后再把它改成autolisp
程序中定义了三个函数:
syz-base64-encode-a (str ) 加密字符串
syz-base64-decode-a (str ) 解密字符串
syz-base64-decode-aL (str) 解密字符串,输出一个表。为了方便使用二进制数据。
由于使用了保留函数调用CryptStringToBinaryA,仅支持acad,32位64位都可以,高版本lispsys=0才能用。
只能使用ansi编码,不支持Unicode
用法:
命令: (syz-base64-encode-a "12345上山打老虎")
"MTIzNDXJz8m9tPLAz7ui"
命令: (syz-base64-decode-a "MTIzNDXJz8m9tPLAz7ui")
"12345上山打老虎"
命令: (syz-base64-decode-al "MTIzNDXJz8m9tPLAz7ui")
(49 50 51 52 53 201 207 201 189 180 242 192 207 187 162)





baitang36 发表于 2024-6-18 20:39:59

kozmosovia 发表于 2024-6-18 18:45
好像在lispsys=1的情况下,不能用。

不支持utf-8字符串,只支持ansi编码,必须lispsys=0

baitang36 发表于 2024-6-18 15:41:30

dwx爱好者可以参照汇编码实现同样功能

kozmosovia 发表于 2024-6-18 18:45:30

本帖最后由 kozmosovia 于 2024-6-18 19:00 编辑

好像在lispsys=1的情况下,不能用。

ssyfeng 发表于 2024-6-18 14:57:31

这个也是用隐藏函数的吗?

自贡黄明儒 发表于 2024-6-18 15:22:07

这也太强了。:victory:

紫苏炒黄瓜 发表于 2024-6-18 15:56:36

先点赞后观看

w090212y 发表于 2024-6-18 16:12:35

6啊

p-3-ianlcc 发表于 2024-6-18 16:39:01

太棒了,点赞~
下载来存着!!

帝都划水王 发表于 2024-6-18 16:52:39

先顶后看,火速下载

czb203 发表于 2024-6-18 17:36:35


太棒了,点赞~

tryhi 发表于 2024-6-18 17:57:45

速度确实非常快,比系统的还快
页: [1] 2
查看完整版本: [原创]纯lisp实现最高效base64编码解码