Discuz教程网

二进制数据 转 字符串

[复制链接]
authicon dly 发表于 2011-11-27 20:54:18 | 显示全部楼层 |阅读模式
  1. <?php

  2. /*
  3. 用途: 二进制数据 转 字符串
  4. 用来传输文件等二进制数据时编码
  5. base64_encode 的另外一个解决方法。
  6. 作者: Heyond
  7. 时间: 2008-7-31
  8. 备注: 转载无须注明出处
  9. 原理: 将一个字节,也就是8位,拆分为高四位一个字节,低四位一个字节,然后分别映射到 0123456789ABCDEF 中的某一个字符。
  10. */

  11. function tobyte($c) {
  12. $i = ord($c) - 48;
  13. $i -= $i > 9 ? 7 : 0;
  14. return $i;
  15. }
  16. function tochar($int) {
  17. return chr($int + ($int > 9 ? 57 : 48));
  18. }
  19. function hex_decode($s) {
  20. $r = '';
  21. $l = strlen($s);
  22. for($i=0; $i<$l; $i=$i+2) {
  23. $r .= chr(tobyte($s[$i]) << 4 | tobyte($s[$i+1]));
  24. }
  25. return $r;
  26. }
  27. function hex_encode($s) {
  28. $r = '';
  29. $high = bindec('11110000'); //note 取高四位
  30. $low = bindec('00001111'); //note 取低四位
  31. $l = strlen($s);
  32. for($i=0; $i<$l; $i++) {
  33. $k = ord($s[$i]);
  34. $r .= tochar(($k & $high) >> 4);
  35. $r .= tochar($k & $low);
  36. }
  37. return $r;
  38. }
  39. echo $s = hex_encode('This');
  40. echo hex_decode($s);
复制代码




上一篇:PHP和C (++i) + (++i) +(++i) 的结果?(作者:heyond)
下一篇:php 截取数组的一部分元素和获取数组键名及截取字符串与获取字符串
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 20:11

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表