我有一个从C SDK返回的图像缓冲区,

我可以写入本地图像并将其读取为base64字符串,但这需要额外的步骤。

如何将字节数组直接转换为base64字符串,以便可以在网络请求中发送它?

image = (ctypes.c_ubyte*s.dwDataLen)()
ctypes.memmove(image, s.pBuffer, s.dwDataLen)


我尝试使用base64.encodestring,但收到此错误

TypeError: expected single byte elements, not '<B' from c_ubyte_Array_8716

最佳答案

尝试这个:

import ctypes
import base64

image = (ctypes.c_ubyte * s.dwDataLen)()
ctypes.memmove(image, s.pBuffer, s.dwDataLen)
# Convert the image to an array of bytes
buffer = bytearray(image)
encoded = base64.encodebytes(buffer)


如果使用的是base64.b64encode,则应该可以将image传递给它:

import ctypes
import base64

image = (ctypes.c_ubyte * s.dwDataLen)()
ctypes.memmove(image, s.pBuffer, s.dwDataLen)
encoded = base64.b64encode(image)

关于python - 如何在ctypes中将无符号字节数组转换为base64字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56573585/

10-17 03:09