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

Python中如何实现安卓Base64.encodeToString(bytes,11)等效功能

安卓Base64.encodeToString flag=11的含义与Python等价实现

flag参数值解析

安卓android.util.Base64的编码标志是位掩码,可通过按位或组合多个规则,各个公开常量的对应数值如下:

  • NO_PADDING = 1:省略编码结果末尾的=填充字符
  • NO_WRAP = 2:编码结果不插入任何换行符(默认配置下每76个字符会插入一个换行符)
  • CRLF = 4:换行时使用\r\n作为换行符(仅在配置自动换行时生效)
  • URL_SAFE = 8:使用URL安全字符表,将标准Base64中的+替换为-、/替换为_

对数值11做拆解:11 = 1 + 2 + 8 = NO_PADDING | NO_WRAP | URL_SAFE,未包含CRLF标志,对应的编码规则为:

  1. 使用URL安全的Base64字符集,结果无+//
  2. 输出单行结果,不插入任何换行
  3. 省略末尾所有=填充字符

Python等价实现

Python标准库base64模块的urlsafe_b64encode方法已经默认满足「URL安全字符集」「不插入换行」两个规则,只需要额外移除末尾的=填充即可与安卓flag=11的编码结果完全一致,实现代码如下:

import base64

def android_base64_encode_flag11(data: bytes) -> str:
    """等价于安卓Base64.encodeToString(data, 11)"""
    # 执行URL安全Base64编码,默认无换行、带=填充
    encoded_bytes = base64.urlsafe_b64encode(data)
    # 移除末尾=填充,转字符串返回
    return encoded_bytes.rstrip(b'=').decode("ascii")

一致性验证

通过多组输入对照可确认结果完全匹配:

  • 输入字节b"test":安卓编码结果为dGVzd,上述函数输出同样为dGVzd
  • 输入字节b"\x00\x10\x83":安卓编码结果为ABC,上述函数输出同样为ABC
  • 输入字节b"\xfb\xef\xbe":安卓编码结果为--_-,上述函数输出完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:48:44