在python中将负值打印为十六进制 [英] Printing negative values as hex in python

查看:110
本文介绍了在python中将负值打印为十六进制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 C++ 中有以下代码片段:

I have the following code snippet in C++:

for (int x = -4; x < 5; ++x)
       printf("hex x %d 0x%08X\n", x, x);

它的输出是

hex x -4 0xFFFFFFFC
hex x -3 0xFFFFFFFD
hex x -2 0xFFFFFFFE
hex x -1 0xFFFFFFFF
hex x 0 0x00000000
hex x 1 0x00000001
hex x 2 0x00000002
hex x 3 0x00000003
hex x 4 0x00000004

如果我在 python 中尝试同样的事情:

If I try the same thing in python:

for x in range(-4,5):
   print "hex x", x, hex(x)

我得到以下内容

hex x -4 -0x4
hex x -3 -0x3
hex x -2 -0x2
hex x -1 -0x1
hex x 0 0x0
hex x 1 0x1
hex x 2 0x2
hex x 3 0x3
hex x 4 0x4

或者这个:

for x in range(-4,5):
   print "hex x %d 0x%08X" % (x,x)

给出:

hex x -4 0x-0000004
hex x -3 0x-0000003
hex x -2 0x-0000002
hex x -1 0x-0000001
hex x 0 0x00000000
hex x 1 0x00000001
hex x 2 0x00000002
hex x 3 0x00000003
hex x 4 0x00000004

这不是我所期望的.是否有一些我遗漏的格式化技巧可以将 -4 变成 0xFFFFFFFC 而不是 -0x04?

This is not what I expected. Is there some formatting trick I am missing that will turn -4 into 0xFFFFFFFC instead of -0x04?

推荐答案

您需要将整数明确限制为 32 位:

You need to explicitly restrict the integer to 32-bits:

for x in range(-4,5):
   print "hex x %d 0x%08X" % (x, x & 0xffffffff)

这篇关于在python中将负值打印为十六进制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆