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

Clarity中uint转string方法咨询:实现字符串与uint拼接

在Clarity中将uint转换为字符串的方法

Clarity本身没有内置的uint转字符串的原生函数,你需要自己实现一个转换逻辑,核心思路是逐位提取uint的数字,映射为对应字符后拼接成字符串。

通用实现示例

下面是一个支持任意非负uint值的转换函数:

(define-public (uint-to-str (num uint))
  (letrec
    ((convert (lambda (n acc)
      (if (is-eq n u0)
        (if (is-eq acc "") "0" acc)
        (convert (divide n u10) (concat (ascii (plus (mod n u10) 48)) acc))
      )
    )))
    (convert num "")
  )
)

代码逻辑说明

  • 用letrec定义递归辅助函数convert,负责逐位处理数字:
    • 当输入的n为u0时,判断累加器acc是否为空(单独处理输入为u0的情况),返回对应字符串;
    • 用mod n u10提取当前数字的最后一位,加上ASCII码48(对应字符'0'的ASCII值)后,通过ascii函数转为字符;
    • 将该字符拼接到累加器acc的前面,再递归处理divide n u10(去掉最后一位的剩余数字)。

拼接使用示例

转换完成后就可以和普通字符串拼接,比如:

(define-public (concat-str-uint (prefix string) (num uint))
  (concat prefix (uint-to-str num))
)

调用(concat-str-uint "Score: " u987)会返回字符串"Score: 987"。

注意点

  • 该函数支持所有非负uint值,包括u0和超大数值;
  • Clarity字符串是不可变类型,每次拼接会生成新字符串,不过常规uint转换的性能影响可以忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:50:37