2015-10-26 61 views
0

我試圖將三種類型的整數(8,16 & 32位)轉換爲固定長度的十六進制字符串,在Php。獲取或設置PHP中的十六進制字符串的長度

作爲一個例子,第三個int是32位無符號的。 它的值設置爲300.將它轉換爲十六進制,給我12c。

我想總是從我的int中獲得一個固定的六個字符的十六進制字符串,即在此示例中:00 01 2c ...或00 00 78如果我的int值爲120. (注意:我知道32位會克服這個範圍)

有沒有什麼辦法在PHP獲得十六進制字符串的長度? 另一個策略是定義hexa字符串的長度,但是我沒有發現任何關於這個的東西。

我的目標是能夠始終發送一個6字符大小的十六進制字符串到連接的對象。

我用'dechex()'將我的值轉換爲十六進制,但我永遠不知道輸出的字符數,因此不能添加特定數量的零(對於我最後的十六進制字符串6字長)。

我讀過一些關於設置PHP_INT_MAX的內容,但我也讀過它會影響所有ints,我不想要。

非常感謝您的幫助。

回答

3

您可以使用str_pad

<?php 
$number = 4; 
$hexString = dechex($number); 
$result = str_pad($hexString,6,"0",STR_PAD_LEFT); 
echo($result); 
?> 
+0

你可能要到別的地方聯繫起來,而不是W3Schools的... – cafonso

+0

它現在聯官方文檔 – namelivia

+0

我看。現在看起來不錯。 – cafonso

2

使用printf()

printf('%06x', 32); // 0000206 
//  ^----zero-pad 
//  ^---6 char string 
//   ^--hex output 
+0

謝謝Marc B,我試過這個,但由於某種原因,它沒有按預期輸出我的字符串。 – Stanislasdrg

+0

好的,謝謝你,Marc,它的效果也很好。 – Stanislasdrg

0
<?php 

$number = 300; 
$hex_string = chunk_split(sprintf('%06x', $number), 2, ' '); 
echo $hex_string; 

?> 
相關問題