有没有办法知道数据是十进制,二进制还是十六进制?

时间:2017-08-11 07:16:52

标签: php binary hex decimal

我需要转换我不知道是否

的数据
  • 小数
  • 二进制
  • 十六进制

到十进制格式。

到目前为止,我已尝试使用

  • bindec()将二进制数据转换为十进制数据
  • hexdec()将十六进制转换为十进制

但是,我需要事先确定一个数字是十进制还是十六进制。

有办法吗?

1 个答案:

答案 0 :(得分:1)

你可以遇到的任意基础之间的唯一区别是文字。在PHP中,每个数字都存储为整数或浮点数。

$binary = 0b1100; // stored as 12
$oct    = 014;    // stored as 12
$hex    = 0xC;    // stored as 12

但是,如果您的数据是字符串,则可以使用正则表达式来确定其类型,而不是使用hexdec()octdec()bindec()函数将它们转换为十进制。

或者,您可以使用intval()函数,该函数通过字符串的格式自动检测类型:

intval("0b000"); // bin->dec conversion
intval("014");   // oct->dec conversion
intval("0xC");   // hex->dec conversion
intval("12");    // str->dec cast!!
intval("asd");   // str->dec cast!!

注意未格式化的字符串,因为intval()会将所有内容都变成一个数字。