hexdec()函數的作用是將十六進製字符串轉換為十進制整數。其語法如下:
$decimal = hexdec("1A");
以上代碼將字符串"1A"轉換為十進制的26 。需要注意的是, hexdec()不區分大小寫, "1A"和"1a"的結果是相同的。
sprintf()用於將變量格式化為字符串。我們可以使用它將整數格式化為指定大小寫的十六進製字符串:
$hexLower = sprintf("%x", 255); // 輸出 "ff"
$hexUpper = sprintf("%X", 255); // 輸出 "FF"
%x表示小寫的十六進制格式, %X表示大寫。
結合hexdec()與sprintf() ,我們可以實現任意十六進製字符串的大小寫轉換:
$originalHex = "a1b2c3";
$decimal = hexdec($originalHex); // 轉為十進制
$upperHex = sprintf("%X", $decimal); // 轉為大寫十六進制
$lowerHex = sprintf("%x", $decimal); // 轉為小寫十六進制
運行以上代碼後:
$upperHex為"A1B2C3"
$lowerHex為"a1b2c3"
這種方法尤其適用於統一輸入格式或對接對大小寫敏感的外部系統,比如某些需要大寫十六進製字符串的API 接口。
有時我們需要構造包含十六進制編碼的URL,而URL 中的%XX編碼可能需要統一大小寫。例如:
$char = "#";
$encoded = strtoupper(bin2hex($char)); // 得到 "23"
$url = "https://gitbox.net/page.php?param=%" . $encoded;
輸出的URL 為:
https://gitbox.net/page.php?param=%23
如果你希望使用小寫形式,只需將strtoupper()替換為strtolower() ,或者直接使用sprintf('%x', ord($char)) 。
通過hexdec()將任意十六進製字符串解析為整數,再藉助sprintf()可以輕鬆控制輸出的十六進制格式是大寫還是小寫。這種方式不僅簡潔,而且兼容性強,適合用於編碼轉換、數據格式化等多種場景。
掌握這兩個函數的組合用法,可以讓你在處理十六進製字符串時更加游刃有餘。