【问题标题】:Convert BLOB jumble to 0s and 1s [byte stream to binary string]将 BLOB 乱码转换为 0 和 1 [字节流转二进制字符串]
【发布时间】:2014-04-14 20:16:41
【问题描述】:

我的 MySQL 表中有一个 BLOB 列。当我使用 PHP 回显该字段的值时,我得到 ​​p>

SBτF¶☼╢ñ═∩P╙  _ë    ☺K ☺♦ Å☼♂↔☻        ♥ 

有没有办法将二进制转换为 0 和 1 的字符串?

此数据不是图像也不是文本,它们是小型 UDP 数据包,其中 0 和 1 具有重要意义,我需要加载该数据并对其进行解释

【问题讨论】:

  • 有,但很难想象你为什么想要。你到底想做什么?
  • 这些是 GPS 设备接收到的小型紧凑消息
  • 您可能想查看名为 pack、unpack 和 base_convert 的 php 函数。
  • @Mikk 是的 unpack 和 base_convert 正在工作,这就是答案
  • @Moak base_convert 仅适用于可以放入 double 的数字。

标签: php mysql binary


【解决方案1】:

我找不到解决这个问题的方法,所以我打算重新发明轮子。

function binDigitsFromString($str) {
    $r = '';
    for($i=0; $i<strlen($str); $i++) $r .= sprintf("%08b",ord($str[$i]));
    return $r;
}

【讨论】:

  • +1 我认为这就是 OP 的意思,从 blob 访问和处理 bytes 而不是将其内容回显给客户端。
【解决方案2】:

您不应该直接编码 blob 数据,而不在标头中指定内容类型。

例如,如果 blob 包含 PNG 图像的图像数据,您可以这样设置标头:

header("Content-Type: image/png");
echo $myBlob;

这将呈现为图像。

值得一读:http://www.mysqltutorial.org/php-mysql-blob/

【讨论】:

  • 这不是图片,我很想要二进制的0和1
【解决方案3】:

您可以将 BLOB 转换为 Char 而不是 Varchar

您可以使用CAST函数将对应的值转换为字符集utf8

【讨论】:

  • 数据不是文字,不是图片我真的需要0和1
猜你喜欢
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2017-04-25
  • 2013-03-06
  • 1970-01-01
  • 2010-09-24
相关资源
最近更新 更多