当前位置: 首页 > 面试题库 >

在Python2和Python3中编写不同的十六进制值

戚永福
2023-03-14
问题内容

我目前正在将Python2脚本移植到Python3,并在此行遇到问题:

print('\xfe')

当我使用Python2运行它时python test.py > test.out,该文件由十六进制值组成FE 0A,如预期的那样。

但是,当我使用Python3运行它时python3 test.py > test.out,文件由hex-values组成C3 BE 0A

这是怎么了 如何FE 0A使用Python3接收所需的输出。


问题答案:

字节序列C3 BE是字符U +
00FE
的UTF-8编码表示形式。

Python 2将字符串作为字节序列而不是字符来处理。所以'\xfe'是一个str含有一个字节对象。

在Python
3中,字符串是(Unicode)字符的序列。因此,代码'\xfe'是一个包含一个字符的字符串。当您打印字符串时,必须将其编码为字节。由于您的环境选择了UTF-8的默认编码,因此已对其进行了相应编码。

如何解决这个问题取决于您的数据。是字节还是字符?如果是字节,则更改代码以告知解释器:
print(b'\xfe')。如果它是字符,但是您想要不同的编码,则对字符串进行相应的编码:print( '\xfe'.encode('latin1') )



 类似资料:
  • 问题内容: 如何将RGB格式的颜色转换为十六进制格式,反之亦然? 例如,转换为。 问题答案: 注 :这两个版本的期待整数值,并且,所以你需要,如果你有非整数值做自己的舍入。 以下将执行RGB到十六进制的转换,并添加任何所需的零填充: 转换另一种方式: 最后,在答案中讨论并在@cwolves的评论中建议使用的替代版本: 更新 这是它的一个版本,还解析了一个速记的三元组,例如“#03F”:

  • 问题内容: 我想知道的是最有效的代码转换方式(迅速2): 十进制到二进制 二进制到十进制 十进制到十六进制 十六进制到十进制 二进制到十六进制 十六进制到二进制 我已经有了实现该目标的基本且漫长的方法,但是我想找到一种非常有效的方法。 抱歉,问题有点长… 问题答案: 两者和都有带有(基)的初始化程序。结合这些,您可以实现所有转化:

  • 主要内容:二进制,八进制,十六进制我们平时使用的数字都是由 0~9 共十个数字组成的,例如 1、9、10、297、952 等,一个数字最多能表示九,如果要表示十、十一、二十九、一百等,就需要多个数字组合起来。 例如表示 5+8 的结果,一个数字不够,只能”进位“,用 13 来表示;这时”进一位“相当于十,”进两位“相当于二十。 因为逢十进一(满十进一),也因为只有 0~9 共十个数字,所以叫做 十进制(Decimalism)。十进

  • 问题 你想将一个十六进制字符串解码成一个字节字符串或者将一个字节字符串编码成一个十六进制字符串。 解决方案 如果你只是简单的解码或编码一个十六进制的原始字符串,可以使用 binascii 模块。例如: >>> # Initial byte string >>> s = b'hello' >>> # Encode as hex >>> import binascii >>> h = binascii

  • 我正在处理插座连接。我在客户端工作。我已经讨论了Socket作为十六进制传递值。我需要在服务器上发送字符串,例如(0x01是一个十六进制值和一个字符串“ravi”),他们需要像1 72 61 76 69这样的六进制值。我尝试将字符串Ravi转换为hexa值作为字符串并附加“1”,并尝试转换为字节数组。我得到一个异常,StringIndexOutOfBound异常。 更新: `public stat

  • 问题内容: 如何将十进制转换为以下格式的十六进制(至少两位,零填充,没有0x前缀)? 输入: 输出: 输入: 输出: 我尝试过,但似乎它显示了第一个示例,但没有显示第二个示例。 问题答案: 将该功能与格式一起使用。 该部分要求使用至少2位数字,并使用零将其填充到长度,表示小写的十六进制。 的 格式规范的迷你语言 也给你大写十六进制输出,并且可以前缀字段宽度与以包括或前缀(取决于你阉羊使用或作为格式