乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: grandhougday

[编程交流] Ascii和(vl字符串elt)给出

[复制链接]

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:46:40 | 显示全部楼层
我想我应该找到一些方法来提取正确的字符。
谢谢你的专业评论。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:50:18 | 显示全部楼层
不客气
回复

使用道具 举报

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:53:10 | 显示全部楼层
我找到了(vl string elt)结果的含义。在命令提示符中,我得到了以下答案:
  1. Command: (vl-string-elt "Þ" 0)
  2. 92
  3. Command: (vl-string-elt "Þ" 1)
  4. 85
  5. Command: (vl-string-elt "Þ" 2)
  6. 43
  7. Command: (vl-string-elt "Þ" 3)
  8. 48
  9. Command: (vl-string-elt "Þ" 4)
  10. 48
  11. Command: (vl-string-elt "Þ" 5)
  12. 68
  13. Command: (vl-string-elt "Þ" 6)
  14. 69

这意味着:“+00DE”意味着“222”
有人知道为什么会这样吗?如何才能得到正确的答案?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:56:47 | 显示全部楼层
如果您使用:
 
  1. (vl-string->list "Þ")
回复

使用道具 举报

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:59:34 | 显示全部楼层
结果如下:
  1. Command: (vl-string->list "Þ")
  2. (92 85 43 48 48 68 69)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:02:07 | 显示全部楼层
好的,因此,我猜测:
 
  1. (vl-list->string (vl-string->list "Þ")

 
将返回:
 
  1. "\U+00DE"

 
考虑到这一点,我们可以将十六进制部分(00DE)转换为十进制表示:
 
  1. (defun _ascii ( ch )
  2.    (_HexList->Decimal (reverse (cdddr (vl-string->list ch))))
  3. )
  4. (defun _HexList->Decimal ( lst )
  5.    (if lst
  6.        (+  (* 16 (_HexList->Decimal (cdr lst)))
  7.            (if (< (car lst) 65)
  8.                (- (car lst) 48)
  9.                (- (car lst) 55)
  10.            )
  11.        )
  12.        0
  13.    )
  14. )

 
  1. _$ (_ascii "Þ")
  2. 222
回复

使用道具 举报

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 09:05:30 | 显示全部楼层
我会尽快试试的。
谢谢。
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 09:07:55 | 显示全部楼层
李,
让我编辑您的优秀代码,以便用新函数替换内部“ascii”函数:
 
  1. [size=3][font=Calibri](defun _ascii (ch / ret)[/font][/size]
  2. [size=3][font=Calibri]  (if (zerop (setq ret (_HexList->Decimal (reverse (cdddr (vl-string->list ch))))))[/font][/size]
  3. [size=3][font=Calibri]    (ascii ch)[/font][/size]
  4. [size=3][font=Calibri]    ret[/font][/size]
  5. [size=3][font=Calibri]  ) [/font][/size]
  6. [size=3][font=Calibri])[/font][/size]
  7. [size=3][font=Calibri](defun _HexList->Decimal (lst)[/font][/size]
  8. [size=3][font=Calibri]  (if lst[/font][/size]
  9. [size=3][font=Calibri]    (+ (* 16 (_HexList->Decimal (cdr lst)))[/font][/size]
  10. [size=3][font=Calibri]      (if (< (car lst) 65)[/font][/size]
  11. [size=3][font=Calibri]        (- (car lst) 48)[/font][/size]
  12. [size=3][font=Calibri]        (- (car lst) 55)[/font][/size]
  13. [size=3][font=Calibri]      )[/font][/size]
  14. [size=3][font=Calibri]    )[/font][/size]
  15. [size=3][font=Calibri]    0[/font][/size]
  16. [size=3][font=Calibri]  )[/font][/size]
  17. [font=Calibri][size=3])[/size][/font]
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 09:13:17 | 显示全部楼层
这是某种错误的结果-在我的电脑上是正确的:
 
  1. Command: (vl-string->list "Þ")
  2. (222)

 
M、 R。
回复

使用道具 举报

91

主题

428

帖子

326

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
474
发表于 2022-7-6 09:15:04 | 显示全部楼层
 
但在我的电脑上:
 
  1. in AutoCAD command line:
  2. Command: (vl-string->list "Þ")
  3. (92 85 43 48 48 68 69)

 
  1. 17
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 09:10 , Processed in 1.632341 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表