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

Arduino中C语言实现HTTP Auth Header的Base64编码问题排查

问题排查与解决

你的代码生成的Base64结果末尾有差异,大概率是这两个细节没处理:

  • Base64填充字符=没加上
    标准Base64规定,当输入字节数不是3的整数倍时,必须用=填充到长度为4的倍数。比如login:password一共14个字节,14除以3余2,编码后末尾需要补1个=(标准结果是bG9naW46cGFzc3dvcmQ=)。如果你用的encode_base64函数没做这个填充逻辑,结果自然会和网页/命令行工具生成的不一样。

  • 没加字符串终止符\0
    你定义的base64是纯字节数组,encode_base64只会把编码后的字节写进去,不会自动加\0。但Serial.println是按C风格字符串来输出的,找不到\0就会接着读数组里的垃圾数据,看起来末尾乱码或者和预期不符。解决很简单,编码完手动加一行:

    base64[base64_length] = '\0';
    

另外也可以核对下encode_base64的编码表,确保用的是标准的+/字符(HTTP Auth要求标准Base64,有些实现会用-_替代,这也会导致结果差异)。

总结下要做的:

  1. 检查并修改encode_base64函数,确保输入长度非3倍数时补充对应数量的=。
  2. 编码完成后给base64数组加\0终止符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:18:20