bytearray中包含空字符的PyByteArray_AsString的解决方案
创始人
2025-01-12 21:00:20
0次

由于 PyByteArray_AsString 只适用于不含空字符的 bytearray,如果在 bytearray 中含有空字符,转换为字符串会出现错误。但是可以通过使用 PyUnicode_AsUTF8AndSize 和 PyBytes_FromStringAndSize 函数来解决该问题。

以下是代码示例:

import ctypes
import sys

PY3 = sys.version_info[0] == 3

if PY3:
    get_buffer = memoryview
    unicode_type = str
    xrange = range
else:
    def get_buffer(m):
        return m

    unicode_type = unicode


def bytearray_as_string(bytearray_obj):
    buf = get_buffer(bytearray_obj)
    size = len(bytearray_obj)

    # Find the index of the first null character
    null_idx = -1
    for i in xrange(size):
        if buf[i] == b'\0':
            null_idx = i
            break

    if null_idx == -1:
        # No null characters found, use PyByteArray_AsString
        return ctypes.c_char_p(buf).value
    else:
        # Convert to PyUnicodeObject first
        # Use PyUnicode_AsUTF8AndSize to convert to UTF-8 encoded bytes
        # Use PyBytes_FromStringAndSize to convert the bytes to string
        unicode_obj = PyUnicode_DecodeUTF8(ctypes.c_char_p(buf).value, size, NULL)
        return PyBytes_AsString(PyUnicode_AsUTF8String(unicode_obj))


# Usage example
bytearray_obj = b'hello\0world'
print(bytearray_as_string(bytearray_obj))

使用 bytearray_as_string 函数来转换带空字符的 bytearray 会得到正确的字符串输出。

相关内容

热门资讯

推荐一款!TX双城棋牌辅助功能... 您好,TX双城棋牌这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩家在...
推荐一款!来来台安麻将透视功能... 推荐一款!来来台安麻将透视功能插件,来来台安麻将总是真的是有透视插件1、点击下载安装,来来台安麻将脚...
揭秘关于!蝴蝶大厅辅助器功能插... 揭秘关于!蝴蝶大厅辅助器功能插件,蝴蝶大厅确实存在有辅助器插件1、蝴蝶大厅破解器简单,蝴蝶大厅机器人...
专业讨论!澳门风云辅助器功能攻... 专业讨论!澳门风云辅助器功能攻略,澳门风云竟然真的是有辅助器攻略1、起透看视 澳门风云辅助软件价格2...
教学盘点!推筒子透视挂功能神器... 教学盘点!推筒子透视挂功能神器,推筒子本来存在有透视挂神器1、超多福利:超高返利,海量正版游戏,推筒...
最新研发!河洛杠次透视功能攻略... 最新研发!河洛杠次透视功能攻略,河洛杠次果然是有透视攻略1、超多福利:超高返利,海量正版游戏,河洛杠...
热点推荐!卡卡众娱透视挂功能脚... 热点推荐!卡卡众娱透视挂功能脚本,卡卡众娱果然真的是有透视挂脚本1、热点推荐!卡卡众娱透视挂功能脚本...
玩家必备科技!闲来玩游戏开挂功... 玩家必备科技!闲来玩游戏开挂功能方法,闲来玩游戏一直真的有开挂方法闲来玩游戏脚本下载中分为三种模型:...
如何分辨真伪!逐月辅助功能软件... 如何分辨真伪!逐月辅助功能软件,逐月一贯真的是有辅助软件在进入逐月软件靠谱后,参与本局比赛的八名玩家...
记者发布!斗十四透视挂功能工具... 记者发布!斗十四透视挂功能工具,斗十四总是存在有透视挂工具斗十四脚本下载中分为三种模型:斗十四挂靠谱...