Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换str';A123456和x27;到字节b'\x0A\x12\x34\x56';用python_Python_Python 2.7_Hex_Python 2.x - Fatal编程技术网

转换str';A123456和x27;到字节b'\x0A\x12\x34\x56';用python

转换str';A123456和x27;到字节b'\x0A\x12\x34\x56';用python,python,python-2.7,hex,python-2.x,Python,Python 2.7,Hex,Python 2.x,我使用Python2.7和windows 我想将字符串“A123456”转换为字节:b'\x0A\x12\x34\x56',然后将其与其他字节(b'\xBB')连接到b'\xBB\x0A\x12\x34\x56' 也就是说,我想从字符串'A123456'和b'\xbb'中获得b'\xbb\x0A\x12\x34\x56',这对于binascii来说并不太难。unhexlify,唯一的问题是,当字符串的半字节数不是偶数时,您希望对其进行零填充(unhexlify不接受长度为7的字符串) 因此,首先

我使用Python2.7和windows

我想将字符串“A123456”转换为字节:b'\x0A\x12\x34\x56',然后将其与其他字节(b'\xBB')连接到b'\xBB\x0A\x12\x34\x56'


也就是说,我想从字符串'A123456'和b'\xbb'

中获得b'\xbb\x0A\x12\x34\x56',这对于
binascii来说并不太难。unhexlify
,唯一的问题是,当字符串的半字节数不是偶数时,您希望对其进行零填充(
unhexlify
不接受长度为7的字符串)

因此,首先,可能最好创建一个快速实用程序函数来实现这一点,因为高效地实现这一点并不十分明显,而且您需要一个自我记录的名称:

def zeropad_even(s):
    # Adding one, then stripping low bit leaves even values unchanged, and rounds
    # up odd values to next even value
    return s.zfill(len(s) + 1 & ~1)
现在,您所要做的就是在取消固定字符串之前使用它来固定字符串:

>>> from binascii import unhexlify
>>> unhexlify(zeropad_even('A123456'))
'\n\x124V'
>>> _ == b'\x0A\x12\x34\x56'
True

我包括了最后一次测试,只是为了证明你得到了预期的结果;
str
repr
尝试在可用的情况下使用可打印的ASCII或短转义符,因此只有
\x12
实际在
repr
中结束
\x0A'
变成
\n
\x34
4
\x56
V
,但这些都是拼写相同字节的等效方法。

这对于
binascii来说并不难。不存在
,,唯一的问题是,当字符串不是偶数个半字节时,要将其归零(
unexlify
不接受长度为7的字符串)

因此,首先,可能最好创建一个快速实用程序函数来实现这一点,因为高效地实现这一点并不十分明显,而且您需要一个自我记录的名称:

def zeropad_even(s):
    # Adding one, then stripping low bit leaves even values unchanged, and rounds
    # up odd values to next even value
    return s.zfill(len(s) + 1 & ~1)
现在,您所要做的就是在取消固定字符串之前使用它来固定字符串:

>>> from binascii import unhexlify
>>> unhexlify(zeropad_even('A123456'))
'\n\x124V'
>>> _ == b'\x0A\x12\x34\x56'
True

我包括了最后一次测试,只是为了证明你得到了预期的结果;
str
repr
尝试在可用的情况下使用可打印的ASCII或短转义符,因此只有
\x12
实际在
repr
中结束
\x0A'
变成
\n
\x34
4
\x56
V
,但这些都是拼写相同字节的等效方法。

你读过答案了吗?Python 2中的字符串是哑字节。它们不是unicode或任何东西,只是哑字节。@Samantha Miller我读过,但我想将'A123456'转换为b'\x0A\x12\x34\x56'。Alexander Huszagh我知道,但我想将'A123456'转换为b'\x0A\x12\x34\x56。你读过答案了吗?Python 2中的字符串是哑字节。它们不是unicode或任何东西,只是哑字节。@Samantha Miller我读过,但我想将'A123456'转换为b'\x0A\x12\x34\x56'。Alexander Huszagh我知道,但我想将'A123456'转换为b'\x0A\x12\x34\x56'。很好,这修复了转换部分,但如何将其与其他字节(b'\xBB'连接起来)到b'\xbb\x0A\x12\x34\x56'?@liyuting:
b'\xbb'+unexlify(零位偶数('A123456'))
?这只是简单的连接,一旦转换过程开始,似乎并不困难。很好,这修复了转换部分,但是如何将它与其他字节(b'\xBB')连接到b'\xBB\x0A\x12\x34\x56'?@liyuting:
b'\xBB'+unexlify(zeropad\u偶数('A123456'))
?这只是简单的串联,一旦转换过程开始,似乎并不困难。