将数字转换为二进制

时间:2016-02-09 20:38:47

标签: php bit-manipulation

我正在研究一种生成导入文件的方法,以便与第三方应用程序一起使用。该文件是纯文本和部分二进制文件。有人创建了一个document,它提供了一种将时间转换为二进制的高级方法。我承认,按位操作一直都在我的头上。下面是我生成文件二进制部分的函数,但我不知道这是否正确。

private function formatTime($time1) {
  //$time should be float
  $time = floatval($time1);
  $time = $time + 2;
  //Process byte 4 (which is the exponent)

  //Mask out everything else
  $byte4 = $time & bindec('01111111100000000000000000000000');

  //Move to first 8 bits
  $byte4 >>= 23;

  //Multiple by 2
  $byte4 <<= 1;
  //$byte4 should be correct at this stage (but double check)

  //Process byte 3 (this includes add "0" to bit 8)
  $byte3 = $time & bindec('00000000011111110000000000000000');
  $byte3 >>= 16;

  //Process byte 2
  $byte2 = $time & bindec('00000000000000001111111100000000');
  $byte2 >>= 8;

  //Process byte 1
  $byte1 = $time & bindec('00000000000000000000000011111111');

  //Put them together in correct order
  $hytek = 0;

  $hytek = $byte4 | ($byte3 << 8) | ($byte2 << 16) | ($byte1 << 24);

  return pack('f',$hytek);
}

我引用的文档说要向指数添加2,所以我添加了2到$ time,但我不知道这是否正确。我也猜测打包结果。我很好奇的是,按位部分是否正确。

当我尝试导入生成的文件时,软件会识别文件的各个部分,但没有时间使用。

0 个答案:

没有答案