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

LibreOffice Calc无宏实现凯撒密码:字符ASCII获取公式报错求助

LibreOffice Calc 无宏实现凯撒密码:字符ASCII编码获取错误解决

错误原因

你使用的REGEX公式中,UNICODE("$1")不会解析正则捕获组的$1,而是直接将字符串"$1"作为参数计算——$字符的Unicode编码是36,所以返回四次36。

正确获取字符ASCII编码的方法

1. 单个字符提取

要提取字符串中第n个字符的编码,用以下公式(n从1开始):

=UNICODE(MID(K15, n, 1))

比如提取"test"的第一个字符t,就用=UNICODE(MID(K15,1,1)),返回116。

2. 批量生成所有字符编码数组

用数组公式一次性获取字符串中所有字符的编码,输入公式后按Ctrl+Shift+Enter触发:

=ARRAYFORMULA(UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1)))

针对"test",这个公式会返回116;101;115;116的数组结果。

延伸:无宏实现凯撒密码完整公式

假设偏移量存放在A1单元格(比如偏移3),以下公式可直接将K15的字符串转换为凯撒密码加密后的结果:

=TEXTJOIN("",TRUE,ARRAYFORMULA(CHAR(
    IF(
        AND(UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1))>=65,UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1))<=90),
        MOD(UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1))-65+A1,26)+65,
        IF(
            AND(UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1))>=97,UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1))<=122),
            MOD(UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1))-97+A1,26)+97,
            UNICODE(MID(K15,ROW(INDIRECT("1:"&LEN(K15))),1))
        )
    )
)))

这个公式会保留非英文字符不变,仅对大小写字母进行偏移加密。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:15:15