【问题标题】:python2 vs. python3 in string containing hexadecimal包含十六进制的字符串中的 python2 与 python3
【发布时间】:2014-12-19 22:13:10
【问题描述】:

考虑一下,使用python 3.4

% python3
Python 3.4.2
% echo `python3 -c "print('a' * 72 + '\xff\xbe\xbf\xff')"` | hexdump -x
0000000    6161    6161    6161    6161    6161    6161    6161    6161
*
0000040    6161    6161    6161    6161    bfc3    bec2    bfc2    bfc3
0000050    000a                                                        
0000051

还有这个,使用python 2.7.9:

% python2 --version
Python 2.7.9
% echo `python2 -c "print('a' * 72 + '\xff\xbe\xbf\xff')"` | hexdump -x
0000000    6161    6161    6161    6161    6161    6161    6161    6161
*
0000040    6161    6161    6161    6161    beff    ffbf    000a        
000004d

这真的是 python 3.4 实现的错误吗?

【问题讨论】:

    标签: python hex hexdump


    【解决方案1】:

    Python 2 的纯 ' 引用字符串表示字节字符串; Python 3 表示字符串。相反语言中的等价物分别是bytes (b'literal') 和unicode (u'literal')。

    % python3 -c "from sys import stdout; stdout.buffer.write(b'a' * 72 + b'\xff\xbe\xbf\xff\n')" | hexdump -x
    

    【讨论】:

      猜你喜欢
      • 2014-10-07
      • 2023-04-08
      • 2019-12-26
      • 2015-01-17
      • 2012-06-05
      • 2014-03-26
      • 1970-01-01
      • 2018-06-16
      • 2016-07-24
      相关资源
      最近更新 更多