當前位置: 首頁> 最新文章列表> 如何用hexdec 搭配str_pad 把不夠位數的十六進制轉成固定長度的十進制?

如何用hexdec 搭配str_pad 把不夠位數的十六進制轉成固定長度的十進制?

gitbox 2025-09-02

在編程過程中,常常會遇到需要將十六進制數轉換成十進制數的場景。而有時,十六進制數的長度不符合預期,可能需要補充零以保證輸出的長度固定。 PHP 提供了強大的內建函數hexdecstr_pad ,它們可以幫助我們輕鬆地完成這個任務。本文將詳細介紹如何通過這兩個函數的結合,完成十六進制數轉換及位數填充的操作。

1. hexdec 函數簡介

hexdec是PHP 中一個將十六進製字符串轉換為十進制整數的函數。它接受一個十六進製字符串作為輸入,返回對應的十進制值。

 <span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hexdec</span></span><span>(</span><span><span class="hljs-string">'1A'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$decimal</span></span><span>;  </span><span><span class="hljs-comment">// 輸出 26</span></span><span>
</span></span>

如上所示, hexdec('1A')將十六進制的'1A'轉換為十進制的26

2. str_pad 函數簡介

str_pad函數用於將字符串填充到指定的長度。如果字符串不足目標長度,它會根據指定的填充字符來補充,默認使用空格。我們可以將它用於確保數值輸出的固定長度。

 <span><span><span class="hljs-variable">$padded</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-string">'123'</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$padded</span></span><span>;  </span><span><span class="hljs-comment">// 輸出 00123</span></span><span>
</span></span>

在這個例子中, str_pad把字符串'123'填充到長度為5 的字符串,使用零填充並且將零加在字符串的左邊。

3. 結合hexdec 和str_pad 實現需求

我們現在需要將十六進制的數值轉換為十進制,並確保輸出的十進制數是一個固定長度。例如,我們希望將十六進制數'1A'轉換為十進制後輸出為5 位數,不足部分用零填充。

我們可以通過將hexdecstr_pad函數結合來實現這一目標:

 <span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-string">'1A'</span></span><span>;  </span><span><span class="hljs-comment">// 這是一個十六進制數</span></span><span>
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hexdec</span></span><span>(</span><span><span class="hljs-variable">$hex</span></span><span>);  </span><span><span class="hljs-comment">// 轉換為十進制</span></span><span>
</span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);  </span><span><span class="hljs-comment">// 填充為固定長度</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span>;  </span><span><span class="hljs-comment">// 輸出 00026</span></span><span>
</span></span>

4. 代碼解析

  1. hexdec($hex)'1A'轉換為十進制數26

  2. str_pad($decimal, 5, '0', STR_PAD_LEFT)26填充成長度為5 的字符串,填充字符為'0' ,並且填充在字符串的左邊。因此輸出結果是'00026'

5. 靈活性和優化

通過這種方式,我們可以靈活地調整輸出的長度。例如,我們可以將輸出的長度改為8 位,或者其他任何需要的長度,只需調整str_pad中的長度參數即可:

 <span><span><span class="hljs-variable">$hex</span></span><span> = </span><span><span class="hljs-string">'1A'</span></span><span>;  </span><span><span class="hljs-comment">// 十六進制數</span></span><span>
</span><span><span class="hljs-variable">$decimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">hexdec</span></span><span>(</span><span><span class="hljs-variable">$hex</span></span><span>);  </span><span><span class="hljs-comment">// 轉換為十進制</span></span><span>
</span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_pad</span></span><span>(</span><span><span class="hljs-variable">$decimal</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>, STR_PAD_LEFT);  </span><span><span class="hljs-comment">// 填充為8位元</span></span><span>

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fixedLengthDecimal</span></span><span>;  </span><span><span class="hljs-comment">// 輸出 00000026</span></span><span>
</span></span>

通過這種方式,不同的需求可以通過簡單的參數調整來滿足。

6. 總結

通過組合使用hexdecstr_pad ,我們能夠方便地將十六進制數轉換為固定長度的十進制數。 hexdec用於處理十六進製到十進制的轉換,而str_pad負責確保輸出的數值位數符合要求。這樣,不論是處理小數還是大數,我們都能輕鬆實現位數補充,確保輸出的規範性。