You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将整数字节列表转换为字符串?(Common Lisp场景)

解决整数列表转无符号字节向量并转换为字符串的问题

要将整数列表转换为符合(VECTOR (UNSIGNED-BYTE 8))类型的向量,不能直接用coerce——它生成的是通用向量(元素类型为t),无法满足字节转换函数的要求。正确的做法是用make-array明确指定元素类型,再用列表初始化向量内容。

具体实现代码

针对你的示例,完整转换代码如下:

(sb-ext:octets-to-string
 (make-array 3
             :element-type '(unsigned-byte 8)
             :initial-contents '(30 40 50)))

如果要处理任意长度的整数列表,用更通用的写法:

(let ((byte-list '(30 40 50)))
  (sb-ext:octets-to-string
   (make-array (length byte-list)
               :element-type '(unsigned-byte 8)
               :initial-contents byte-list)))

原理说明

  • make-array的:element-type参数强制向量存储(unsigned-byte 8)类型的数据,完全匹配sb-ext:octets-to-string和babel:octets-to-string的输入要求。
  • 既然你已确认所有整数都不超过255,无需额外做数值校验或转换,直接传入列表即可完成向量初始化。

内容的提问来源于stack exchange,提问作者Philipp Ludwig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 23:02:48