擅长:python、mysql、java
<pre><code> uint32_t b = 0x40F05394 + printf("");
printf("%.11f\n", *(float *) &b);
</code></pre>
<p>在我的系统中打印:</p>
<pre><code>7.51020240784
</code></pre>
<p>所以需要用<code>f</code>转换说明符打印更多的数字。与python一样,您只需请求要打印的位数。</p>
<p>示例:</p>
<pre><code>print "%.11f" % (unpack("<f",hexbytes)[0])
</code></pre>
<p>如果要打印的位数在文本文件中是可变的,则还必须将此信息存储在文本文件中。</p>
<p>然后在C中可以打印:</p>
<pre><code> int p = 11;
printf("%.*f\n", p, *(float *) &b); // 11 here can be a variable
</code></pre>
<p>在Python中:</p>
<pre><code> p = 11
print "%.*f" % (p, (unpack("<f",hexbytes)[0])) # 11 can be a variable
</code></pre>
<p>当然,要从<code>0x9453F040</code>获得<code>0x40F05394</code>,只需要重新排列字节的顺序。</p>