PHP-字符串到64位数字

PHP-字符串到64位数字,php,twitter,64-bit,Php,Twitter,64 Bit,我正在玩Twitter API。一些数字,比如Twitter ID,确实很大,比如199693823725682700 我把这个数字作为字符串格式,现在我需要把它改成普通可读的数字,不像10000XE09,因为我需要从这个字符串转换的数字中减去-1。然后,我还需要将数字作为字符串发送 总之,在PHP中,如何将字符串a数字(例如199693823725682700)更改为另一个字符串199693823725682699原始数字-1 非常感谢 你应该用PHP试试GMP 下面是一个例子。您应该尝试使用

我正在玩Twitter API。一些数字,比如Twitter ID,确实很大,比如199693823725682700

我把这个数字作为字符串格式,现在我需要把它改成普通可读的数字,不像10000XE09,因为我需要从这个字符串转换的数字中减去-1。然后,我还需要将数字作为字符串发送

总之,在PHP中,如何将字符串a数字(例如199693823725682700)更改为另一个字符串199693823725682699原始数字-1


非常感谢

你应该用PHP试试GMP


下面是一个例子。

您应该尝试使用PHP实现GMP


下面是.

显然目前在php中处理大整数的唯一方法是使用bcmath扩展。64位整数在PHP6中被规划。

显然,目前在php中处理大整数的唯一方法是使用bcmath扩展。在PHP6中规划64位整数。

当然

数学模块 功能

当然可以

数学模块
函数

如果BCMath不可用,则最好使用该函数。该函数将递减存储为字符串的任意大小的整数。它不处理浮点数或科学记数法的插值,它只处理带有可选符号的十进制数字串

function decrement_string ($str) {

  // 1 and 0 are special cases with this method
  if ($str == 1 || $str == 0) return (string) ($str - 1);

  // Determine if number is negative
  $negative = $str[0] == '-';

  // Strip sign and leading zeros
  $str = ltrim($str, '0-+');

  // Loop characters backwards
  for ($i = strlen($str) - 1; $i >= 0; $i--) {

    if ($negative) { // Handle negative numbers

      if ($str[$i] < 9) {
        $str[$i] = $str[$i] + 1;
        break;
      } else {
        $str[$i] = 0;
      }

    } else { // Handle positive numbers

      if ($str[$i]) {
        $str[$i] = $str[$i] - 1;
        break;
      } else {
        $str[$i] = 9;
      }

    }

  }

  return ($negative ? '-' : '').ltrim($str, '0');

}

如果BCMath不可用,则最好选择该函数。如果该函数可用,则该函数将递减存储为字符串的任意大小的整数。它不处理浮点数或科学记数法的插值,它只处理带有可选符号的十进制数字串

function decrement_string ($str) {

  // 1 and 0 are special cases with this method
  if ($str == 1 || $str == 0) return (string) ($str - 1);

  // Determine if number is negative
  $negative = $str[0] == '-';

  // Strip sign and leading zeros
  $str = ltrim($str, '0-+');

  // Loop characters backwards
  for ($i = strlen($str) - 1; $i >= 0; $i--) {

    if ($negative) { // Handle negative numbers

      if ($str[$i] < 9) {
        $str[$i] = $str[$i] + 1;
        break;
      } else {
        $str[$i] = 0;
      }

    } else { // Handle positive numbers

      if ($str[$i]) {
        $str[$i] = $str[$i] - 1;
        break;
      } else {
        $str[$i] = 9;
      }

    }

  }

  return ($negative ? '-' : '').ltrim($str, '0');

}

不会有PHP6。请参阅5.4发行说明。@DmitryR:您有链接吗?我在中看到的唯一一件事是PHP5.4将是支持WindowsXP和Windows2003的最后一个系列。我们不会为PHP5.4之后的这些Windows版本提供二进制软件包。不会有PHP6。请参阅5.4发行说明。@DmitryR:您有链接吗?我在中看到的唯一一件事是PHP5.4将是支持WindowsXP和Windows2003的最后一个系列。在PHP5.4之后,我们不会为这些Windows版本提供二进制软件包。这对我来说很有效。bssub和其他人对我的案子不起作用。非常感谢这么聪明的代码。这对我很有用。bssub和其他人对我的案子不起作用。非常感谢这么聪明的代码。