在Django-Python中实现文本转Hex再转Base64的正确方法
正确实现文本→Hex→Base64的Python/Django方案
你的原有代码逻辑错误在于,把输入字符串"ABC"直接当作十六进制值解析成整数,这和在线工具的转换逻辑完全不同。在线工具是将每个字符的ASCII编码转换为对应的十六进制字符,再拼接成Hex字符串,之后将该Hex字符串还原为字节再编码为Base64。
正确转换步骤与代码实现
import base64 def text_to_hex_to_base64(text: str) -> str: # 1. 文本转Hex编码:将字符串按UTF-8编码为字节,再转为十六进制字符串 hex_str = text.encode('utf-8').hex() # 此时hex_str为"414243"(对应"ABC"的ASCII十六进制) # 2. Hex编码转Base64:将十六进制字符串转回字节,再进行Base64编码 hex_bytes = bytes.fromhex(hex_str) base64_str = base64.b64encode(hex_bytes).decode('utf-8') return base64_str # 测试 result = text_to_hex_to_base64("ABC") print(result) # 输出: QUJD
代码说明
text.encode('utf-8'):将字符串转为UTF-8编码的字节流,比如"ABC"转为b'ABC'.hex():将字节流转换为十六进制字符串,b'ABC'转为"414243"bytes.fromhex(hex_str):将十六进制字符串还原为原始字节流,"414243"转回b'ABC'base64.b64encode(...).decode('utf-8'):对字节流进行Base64编码,并将结果转为字符串
在Django中,你可以直接将这个函数集成到视图或工具类中,比如在视图中处理用户输入:
from django.http import HttpResponse import base64 def convert_view(request): if request.method == 'POST': input_text = request.POST.get('input_text', '') hex_str = input_text.encode('utf-8').hex() hex_bytes = bytes.fromhex(hex_str) base64_result = base64.b64encode(hex_bytes).decode('utf-8') return HttpResponse(f"Hex编码: {hex_str}<br>Base64编码: {base64_result}") return HttpResponse("<form method='post'><input name='input_text' type='text'><button type='submit'>转换</button></form>")
内容的提问来源于stack exchange,提问作者Emma William
相关产品推荐
相关产品推荐

