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

如何在SQLite3中将二进制字符串转换为十进制数?

在SQLite3中将二进制字符串转换为十进制数的方法

SQLite没有内置的二进制字符串转十进制函数,不过可以通过以下两种方式实现:

1. 纯SQL递归CTE实现(无需扩展)

适合无法添加自定义函数的场景,通过递归遍历二进制字符串的每一位计算累加值:

WITH RECURSIVE bin_convert(bin_str, decimal, position) AS (
    -- 初始值:目标二进制字符串,初始十进制0,起始位置为字符串长度
    SELECT '11001000', 0, length('11001000')
    UNION ALL
    -- 递归计算:每一位乘以2的对应次方,累加到十进制值,位置递减
    SELECT bin_str, decimal + substr(bin_str, position, 1) * pow(2, length(bin_str) - position), position - 1
    FROM bin_convert
    WHERE position > 0
)
-- 取最终累加的最大值即为结果
SELECT max(decimal) AS result FROM bin_convert;

执行上述语句会返回200,如果要动态传入二进制字符串,可以把固定字符串换成参数或者字段名。

2. 注册自定义函数(灵活易用)

如果使用编程语言操作SQLite,可以注册自定义函数简化查询,以Python为例:

import sqlite3

# 定义二进制转十进制的函数
def bin_to_decimal(bin_string):
    # 可选:添加输入校验,确保字符串仅包含0和1
    if not all(c in '01' for c in bin_string):
        raise ValueError("Invalid binary string")
    return int(bin_string, 2)

# 连接数据库并注册自定义函数
conn = sqlite3.connect('your_database.db')
# 注册名为BIN_TO_DEC的函数,接受1个参数
conn.create_function('BIN_TO_DEC', 1, bin_to_decimal)

# 直接在SQL中使用该函数
cursor = conn.cursor()
cursor.execute("SELECT BIN_TO_DEC('11001000')")
print(cursor.fetchone()[0])  # 输出:200

conn.close()

注册后,在SQL查询中可以像内置函数一样调用BIN_TO_DEC(),处理任意合法的二进制字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:55:00