谢谢你的专业评论。 不客气 我找到了(vl string elt)结果的含义。在命令提示符中,我得到了以下答案:
Command: (vl-string-elt "Þ" 0)
92
Command: (vl-string-elt "Þ" 1)
85
Command: (vl-string-elt "Þ" 2)
43
Command: (vl-string-elt "Þ" 3)
48
Command: (vl-string-elt "Þ" 4)
48
Command: (vl-string-elt "Þ" 5)
68
Command: (vl-string-elt "Þ" 6)
69
这意味着:“+00DE”意味着“222”
有人知道为什么会这样吗?如何才能得到正确的答案? 如果您使用:
(vl-string->list "Þ") 结果如下:
Command: (vl-string->list "Þ")
(92 85 43 48 48 68 69) 好的,因此,我猜测:
(vl-list->string (vl-string->list "Þ")
将返回:
"\U+00DE"
考虑到这一点,我们可以将十六进制部分(00DE)转换为十进制表示:
(defun _ascii ( ch )
(_HexList->Decimal (reverse (cdddr (vl-string->list ch))))
)
(defun _HexList->Decimal ( lst )
(if lst
(+(* 16 (_HexList->Decimal (cdr lst)))
(if (< (car lst) 65)
(- (car lst) 48)
(- (car lst) 55)
)
)
0
)
)
_$ (_ascii "Þ")
222 我会尽快试试的。
谢谢。 李,
让我编辑您的优秀代码,以便用新函数替换内部“ascii”函数:
(defun _ascii (ch / ret)
(if (zerop (setq ret (_HexList->Decimal (reverse (cdddr (vl-string->list ch))))))
(ascii ch)
ret
)
)
(defun _HexList->Decimal (lst)
(if lst
(+ (* 16 (_HexList->Decimal (cdr lst)))
(if (< (car lst) 65)
(- (car lst) 48)
(- (car lst) 55)
)
)
0
)
)
这是某种错误的结果-在我的电脑上是正确的:
Command: (vl-string->list "Þ")
(222)
M、 R。
但在我的电脑上:
in AutoCAD command line:
Command: (vl-string->list "Þ")
(92 85 43 48 48 68 69)
17
页:
1
[2]