试图理解有关MiB(mebibytes)和KiB(kibibytes)中内存位置和大小的十六进制0x
表示法。具体来说,在分区布局表中,我可以看到以下列:
size hex '0x' notation
1 MiB 0x0010 0000
12 MiB 0x00c0 0000
128 KiB 0x0002 0000
但是我发现很难翻译/提取逻辑来计算和自己进行转换(例如从24mib、125kib、16mib转换为'0x'十六进制符号等)。在
因此,你要做的就是把你的思想从cdb'转换成。我发现了这个[https://stackoverflow.com/a/8186974/6167676],但我没有从中做任何有意义的事情。在
令我惊讶的是,我找不到在线的东西来帮助我把MiB/KiB转换成hex'0x'符号。在Python
中,我发现了hex
函数,试图在十六进制“0x”表示法中的十六进制值之间进行基本加法:
如何使用Python
(内置或非函数)自动计算从MiB到十六进制'0x'表示法的转换?另外,hex_add
是否足以对“0x”表示法执行加法?在
一些代码示例演示Python
中的转换和加法非常有用。在
首先,让我们为KiB、MiB、GiB等创建一些常量。在这里不要担心hex,我们只需要任何形式的数字,不管是}或{}都不重要,因为它们都是相同的数字。所以:
1024
还是{12磅多少钱?简单:
^{pr2}$12磅十六进制是多少?在
这给你
'0xc00000'
。在至于“添加十六进制”,这不是你应该做的事情。只需将数字作为数字相加,然后将结果格式化为十六进制。例如,如果要添加32KiB+16KiB+1MiB:
你想要更多的控制输出。如果这很重要,则需要使用format strings(无论是通过
format
函数、str.format
方法或f-string文本)而不是hex
。在您可以指定填充到的宽度和填充字符。您可以使用}(在这种情况下,我们只需要填充到8个字符,这就更有意义了):
#
自动添加0x
(在这种情况下,我们必须填充到8+2=10个字符,而不是8个字符),或者手动添加{你还想把数字分成4块。我们可以使用一个分组字符来接近,但是我们必须在宽度上增加一个额外的1:
……此时,我们不妨再次使用
#
:现在你得到了
'0x00c0_0000'
。如果你真的需要组之间的空格而不是下划线,那么你就需要有点难看了:(我相信有人提议允许任意分组字符,但是被拒绝了,所以只有}表示“按我的语言环境所说的做”。)
_
,,
,或者{所以,如果你想打印出你的表格:
或者你可以写一个函数。在这里,让我们使用一个
Enum
,而不是一堆单独的常量:如果您想向表中添加更多的行,这显然具有更高的可扩展性。在
相关问题 更多 >
编程相关推荐