Bytes.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace loyalsoft;
  3. /**
  4. * byte数组与字符串转化类
  5. * @version
  6. * 1.0.0 Created at 2017-6-12. by --gwang
  7. * @author gwang (mail@wanggangzero.cn)
  8. * @copyright ? 2017-6-12, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  9. */
  10. class Bytes
  11. {
  12. /**
  13. * 转换一个String字符串为byte数组
  14. * @param $str 需要转换的字符串
  15. * @param $bytes 目标byte数组
  16. */
  17. public static function getBytes($string)
  18. {
  19. $bytes = array();
  20. for ($i = 0; $i < strlen($string); $i++) {
  21. $bytes[] = ord($string[$i]);
  22. }
  23. return $bytes;
  24. }
  25. /**
  26. * 将字节数组转化为String类型的数据
  27. * @param $bytes 字节数组
  28. * @param $str 目标字符串
  29. * @return 一个String类型的数据
  30. */
  31. public static function toStr($bytes)
  32. {
  33. $str = '';
  34. foreach ($bytes as $ch) {
  35. $str .= chr($ch);
  36. }
  37. return $str;
  38. }
  39. /**
  40. * 转换一个int为byte数组
  41. * @param $byt 目标byte数组
  42. * @param $val 需要转换的字符串
  43. */
  44. public static function integerToBytes($val)
  45. {
  46. $byt = array();
  47. $byt[0] = ($val & 0xff);
  48. $byt[1] = ($val >> 8 & 0xff);
  49. $byt[2] = ($val >> 16 & 0xff);
  50. $byt[3] = ($val >> 24 & 0xff);
  51. return $byt;
  52. }
  53. /**
  54. * 从字节数组中指定的位置读取一个Integer类型的数据
  55. * @param $bytes 字节数组
  56. * @param $position 指定的开始位置
  57. * @return 一个Integer类型的数据
  58. */
  59. public static function bytesToInteger($bytes, $position)
  60. {
  61. // $val = 0;
  62. $val = $bytes[$position + 3] & 0xff;
  63. $val <<= 8;
  64. $val |= $bytes[$position + 2] & 0xff;
  65. $val <<= 8;
  66. $val |= $bytes[$position + 1] & 0xff;
  67. $val <<= 8;
  68. $val |= $bytes[$position] & 0xff;
  69. return $val;
  70. }
  71. /**
  72. * 转换一个shor字符串为byte数组
  73. * @param $byt 目标byte数组
  74. * @param $val 需要转换的字符串
  75. */
  76. public static function shortToBytes($val)
  77. {
  78. $byt = array();
  79. $byt[0] = ($val & 0xff);
  80. $byt[1] = ($val >> 8 & 0xff);
  81. return $byt;
  82. }
  83. /**
  84. * 从字节数组中指定的位置读取一个Short类型的数据。
  85. * @param $bytes 字节数组
  86. * @param $position 指定的开始位置
  87. * @return 一个Short类型的数据
  88. */
  89. public static function bytesToShort($bytes, $position)
  90. {
  91. // $val = 0;
  92. $val = $bytes[$position + 1] & 0xFF;
  93. $val <<= 8;
  94. $val |= $bytes[$position] & 0xFF;
  95. return $val;
  96. }
  97. }