转换str';A123456和x27;到字节b'\x0A\x12\x34\x56';用python
我使用Python2.7和windows 我想将字符串“A123456”转换为字节:b'\x0A\x12\x34\x56',然后将其与其他字节(b'\xBB')连接到b'\xBB\x0A\x12\x34\x56'转换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的字符串) 因此,首先
也就是说,我想从字符串'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'))
?这只是简单的串联,一旦转换过程开始,似乎并不困难。