如何使用python以二进制补码形式将有符号整数打印为十六进制数?
我有一个负整数(4 个字节),我想要它的二进制补码表示形式的十六进制形式。
>>> i = int("-312367")
>>> "{0}".format(i)
'-312367'
>>> "{0:x}".format(i)
'-4c42f'
但我想看“FF……”
I have a negative integer (4 bytes) of which I would like to have the hexadecimal form of its two's complement representation.
>>> i = int("-312367")
>>> "{0}".format(i)
'-312367'
>>> "{0:x}".format(i)
'-4c42f'
But I would like to see "FF..."
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
这是一种方法(对于 16 位数字):(
不过可能不是最优雅的方法)
Here's a way (for 16 bit numbers):
(Might not be the most elegant way, though)
使用 bitstring 模块:
Using the bitstring module:
简单的
Simple
要将整数视为二进制值,请使用所需位长度的掩码对其进行按位运算。
例如,对于 4 字节值(32 位),我们使用
0xffffffff
进行掩码:To treat an integer as a binary value, you bitwise-and it with a mask of the desired bit-length.
For example, for a 4-byte value (32-bit) we mask with
0xffffffff
:struct
模块执行 Python 值和C 结构体表示为 Python 字节对象。打包字节对象提供对各个字节值的访问。这可用于显示底层 (C) 整数表示。
The
struct
module performs conversions between Python values and C structs represented as Python bytes objects. The packed bytes object offers access to individual byte values.This can be used to display the underlying (C) integer representation.