如果我做的话在C中
USHORT x;
ULONG y;
ULONGLONG yy;
printf("%d %d %d\n", sizeof(x), sizeof(y), sizeof(yy))
输出:2 4 8
如果我要
,我怎样才能在Python中得到它valByte = 0x16
valWord = 0x1234
valDWord = 0x12345678
val64Word = 0x1234567887654321
我期望的输出应该是1,2,4,8
感谢
答案 0 :(得分:5)
在Python3中有bit_length方法:
>>> import math
>>> math.ceil(0x16.bit_length()/8)
1
>>> math.ceil(0x1234.bit_length()/8)
2
>>> math.ceil(0x12345678.bit_length()/8)
4
>>> math.ceil(0x1234567887654321.bit_length()/8)
8
在Python2.7中,long
整数也有bit_length
方法:
>>> (10**20).bit_length()
67
>>> x = 123
>>> long(x).bit_length()
7
答案 1 :(得分:0)
您可以使用sys.getsizeof
,但结果可能很烦人,因为整数可以是最小值。
例如,在我的64位PC中,所有变量的大小都是24字节。