<p>你的整数是用十六进制编码的这一事实与问题无关。在</p>
<pre><code>hexValueAr = [0x085F80, 0x0109A53, 0x0188C6D]
</code></pre>
<p>以及</p>
^{pr2}$
<p>结果是相同的列表。在</p>
<p>Python整数已经有一个方法可以转换为字节:<a href="https://docs.python.org/3/library/stdtypes.html#int.to_bytes" rel="nofollow noreferrer">^{<cd1>}</a>。{a3}很容易转换成{a2}。唯一的问题是,您需要预先知道要使用的字节数。在您的例子中,您可以使用数字3,也可以使用方法<a href="https://docs.python.org/3/library/stdtypes.html#int.bit_length" rel="nofollow noreferrer">^{<cd4>}</a>来计算它。在</p>
<p>以下是上述方法的一种可能实现方式:</p>
<pre><code>from math import ceil
bytesAr = []
for num in hexValueAr:
count = ceil(num.bit_length() / 8)
bytes = num.to_bytes(count, 'big')
bytesAr.extend('{:02X}'.format(x) for x in bytes)
</code></pre>
<p>这就产生了结果</p>
<pre><code>['08', '5F', '80', '10', '9A', '53', '18', '8C', '6D']
</code></pre>
<p>这里的顺序是big-endian:整数的最高字节在数组的最低索引中。在</p>
<p>如果您想将其作为一条直线执行,可以执行以下操作:</p>
<pre><code>bytesAr = ['{:02X}'.format(x) for num in hexValueAr for x in num.to_bytes(ceil(num.bit_length() / 8), 'big')]
</code></pre>
<p>这里一个可能的警告是,输入中的不同数字可能会给您输出中不同数量的元素。例如,如果您的输入是<code>[0x00AB, 0x109C]</code>,第一个元素将生成一个字符串,而第二个元素将生成2个字符串。如果您想避免这种情况,请找到对一个整数进行编码所需的最大字节数,并使用它来代替<code>ceil(num.bit_length() / 8)</code>:</p>
<pre><code>byte_count = ceil(max(hexValueAr).bit_length() / 8))
bytesAr = ['{:02X}'.format(x) for num in hexValueAr for x in num.to_bytes(byte_count, 'big')]
</code></pre>
<p>在本例中,像<code>[0x00AB, 0x109C]</code>这样的输入将产生一堆零,但每个数字的字节数相等:<code>['00', ''AB', '10', '9C']</code>。在</p>