我正在尝试将一串ASCII字符转换为它们的八进制等效字符,并且在我的生活中无法将其弄清楚。有人知道吗?
答案 0 :(得分:3)
我只使用ord
和base_convert
。使用ord
获取十进制的ascii值,然后base_convert
使其成为八进制。
$oct = base_convert(ord($char), 10, 8);
以下是您以函数形式寻求的内容:
function string_to_octal($str)
{
$chars = str_split($str);
$rtn = "";
foreach ($chars as $c) { $rtn .= str_pad(base_convert(ord($c), 10, 8), 3, 0, STR_PAD_LEFT); }
return $rtn;
}
注意:包括str_pad
,因为结果并不总是3字节的块
上述代码示例in action。
编辑:@brbcoding指出,您可以使用decoct($c)
代替base_convert($c, 10, 8)
。