/* bytes to hex implementation */#include "Python.h"static PyObject *_Py_strhex_impl(const char* argbuf, const Py_ssize_t arglen,int return_bytes){PyObject *retval;Py_UCS1* retbuf;Py_ssize_t i, j;assert(arglen >= 0);if (arglen > PY_SSIZE_T_MAX / 2)return PyErr_NoMemory();if (return_bytes) {/* If _PyBytes_FromSize() were public we could avoid malloc+copy. */retbuf = (Py_UCS1*) PyMem_Malloc(arglen*2);if (!retbuf)return PyErr_NoMemory();retval = NULL; /* silence a compiler warning, assigned later. */} else {retval = PyUnicode_New(arglen*2, 127);if (!retval)return NULL;retbuf = PyUnicode_1BYTE_DATA(retval);}/* make hex version of string, taken from shamodule.c */for (i=j=0; i < arglen; i++) {unsigned char c;c = (argbuf[i] >> 4) & 0xf;retbuf[j++] = Py_hexdigits[c];c = argbuf[i] & 0xf;retbuf[j++] = Py_hexdigits[c];}if (return_bytes) {retval = PyBytes_FromStringAndSize((const char *)retbuf, arglen*2);PyMem_Free(retbuf);}#ifdef Py_DEBUGelse {assert(_PyUnicode_CheckConsistency(retval, 1));}#endifreturn retval;}PyAPI_FUNC(PyObject *) _Py_strhex(const char* argbuf, const Py_ssize_t arglen){return _Py_strhex_impl(argbuf, arglen, 0);}/* Same as above but returns a bytes() instead of str() to avoid the* need to decode the str() when bytes are needed. */PyAPI_FUNC(PyObject *) _Py_strhex_bytes(const char* argbuf, const Py_ssize_t arglen){return _Py_strhex_impl(argbuf, arglen, 1);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。