我正在使用一个数据库,该数据库包含许多以前导0为前缀的序列号。
所以序列号看起来像00032432或56332432.
问题在于PHP我不明白具有octals的转换系统是如何工作的。
一个具体的例子是我试图将所有这些基于整数的数字转换并与字符串进行比较。
是否可以将八进制(例如00234)转换为类似“00234”的字符串,以便我可以比较它?
编辑 - 添加一个具体的例子。我希望能够在串口上运行str函数,如下所示。
$serial = 00032432; // coming from DB
if(substr($serial, 0, 1) == '0') {
// do something
}
答案 0 :(得分:4)
当您使用(string) $number
进行转换时,总是得到一个十进制基数的字符串,如果以八进制模式或十进制模式写入数字无关紧要,int是一个int而它本身没有一个基地。这是他的字符串表示,必须用基础解释。
您可以通过以下方式获取数字的八进制字符串表示形式:
$str = base_convert((string) 00032432, 10, 8);
或以十进制代表给出数字:
$str = base_convert((string) 13594, 10, 8);
或更简洁但不太清楚:
$str = base_convert(00032432, 10, 8);
$str = base_convert(13594, 10, 8);
最后,字符串转换是隐式进行的。这些例子给出了结果$ str =“32432”。
base_convert将数字的字符串表示形式从基础转换为另一个
如果您还想在字符串中使用零,则可以使用简单的数学运算添加它们。
希望这可以帮到你。
答案 1 :(得分:1)
要将八进制转换为字符串,请将其转换为:
$str = (string) 00032432;
您可以使用函数octdec和decoct
在八进制和十进制之间进行转换<?php
echo octdec('77') . "\n";
echo octdec(decoct(45));
?>
答案 2 :(得分:1)
$str = sprintf('%o', $octal_value);
答案 3 :(得分:0)
$serial = 00032432; //here you have an octal number
$serial= strval($serial); //now you have a string
if ($serial[0]=="0") {
//do something
}
答案 4 :(得分:0)
数据库中的所有内容都自动为字符串。整数是字符串,日期是字符串,狗是字符串。
如果您正在做一些奇怪的事情,请将任何内容转换为字符串:$a = (string) 12;