BigQuery中如何将二进制字符串转换为int64类型整数
二进制字符串转int64整数实现方案
本方案针对16位以内二进制字符串转十进制int64整数的需求开发,转换效果完全等价于JavaScript代码parseInt(binary_str, 2),以下是不同常用场景的具体实现:
验证基准
转换结果需匹配以下示例标准:
| binary_string (string) | integer (int64) |
|---|---|
| '1011011100111000' | 46904 |
| '1111111111101011' | 65515 |
| '0111111001001010' | 32330 |
注:16位无符号二进制最大值为65535,远低于int64数值上限,转换过程无溢出风险,不需要额外处理符号位。
1. Python 原生实现
直接调用int类的进制转换参数即可完成单值转换:
binary_str = '0111111001001010' result = int(binary_str, 2) # 输出结果为32330,符合预期
2. Pandas 数据表批量转换
如果是处理Pandas DataFrame的整列数据,通过apply方法批量调用转换逻辑:
import pandas as pd # 示例数据表构造 df = pd.DataFrame({ 'binary_string': ['1011011100111000', '1111111111101011', '0111111001001010'] }) # 生成转换后的int64类型新列 df['integer'] = df['binary_string'].apply(lambda x: int(x, 2)).astype('int64')
3. SQL 场景实现
不同数据库语法略有差异:
- MySQL/MariaDB:使用
CONV函数完成进制转换后强转类型SELECT CAST(CONV(binary_string, 2, 10) AS SIGNED) AS integer FROM 表名; - PostgreSQL:通过bit类型中转实现转换
SELECT CAST(('B' || quote_literal(binary_string)) AS BIT(16))::integer AS integer FROM 表名; - Hive/Spark SQL:使用内置
conv函数转换后强转为BIGINT(对应int64)SELECT CAST(conv(binary_string, 2, 10) AS BIGINT) AS integer FROM 表名;
内容的提问来源于stack exchange,提问作者Jorgeblom
相关产品推荐
相关产品推荐

