使用PHP八进制和字符串转换

krx*_*krx 5 php string octal

我正在使用具有一串以前置0开头的序列号的数据库。

因此,序列号可能类似于00032432或56332432。

PHP的问题是我不了解八进制的转换系统如何工作。

一个特定的示例是,我试图将所有这些基于整数的数字与字符串进行转换和比较。

是否可以将八进制(例如00234)转换为类似“ 00234”的字符串,以便进行比较?

编辑-添加特定示例。我希望能够在如下所示的序列上运行str函数。

  $serial = 00032432; // coming from DB

  if(substr($serial, 0, 1) == '0') {

        // do something

   } 
Run Code Online (Sandbox Code Playgroud)

Nic*_*ini 5

当您使用进行转换时(string) $number,您总是会得到一个以十进制为底的字符串,无论您是以八进制模式还是以十进制模式编写数字都没有关系,一个int就是一个int,它本身也没有底。这是他的字符串表示形式,必须使用基数来解释。

您可以通过以下方式获取数字的八进制字符串表示形式:

$str = base_convert((string) 00032432, 10, 8);
Run Code Online (Sandbox Code Playgroud)

或以十进制表示形式给出数字:

$str = base_convert((string) 13594, 10, 8);    
Run Code Online (Sandbox Code Playgroud)

或者,更简洁但不太清楚:

 $str = base_convert(00032432, 10, 8);
 $str = base_convert(13594, 10, 8);
Run Code Online (Sandbox Code Playgroud)

最后,字符串转换是隐式进行的。这些示例给出的结果均为$ str =“ 32432”。

base_convert将数字的字符串表示形式从一个基数转换为另一个

如果您还希望字符串中包含零,则可以通过简单的数学运算将其添加。

希望这可以帮到你。