【问题标题】:Convert 64 character hex String to BINARY(32)将 64 个字符的十六进制字符串转换为 BINARY(32)
【发布时间】:2019-07-24 22:00:35
【问题描述】:

我有一个“e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855”形式的输入(从 SHA-256 获得的 64 个十六进制字符),我想用 MySqli 将其存储在数据库中。值应插入到的列的类型为 BINARY(32)。 我认为该值被解释为一个字符串,而不是一个十六进制数字,所以 MySQL 返回“数据太长,对于第 y 行的 x 列”。 如何在 PHP 中将此字符串转换为 32 字节? 我已经尝试添加“0x”作为前缀,MySql 的 CONVERT 函数,我读到了 hex2bin 和 bin2hex,它们似乎没有做我想要的,我在 bind_params 中尝试了字符串和 int 类型(int 结果为 0x3000.. . 无论输入如何)

提前致谢

【问题讨论】:

  • hex2bin 应该做你想做的。为什么说没有呢?
  • 我刚刚意识到我在 bind_param 中将类型设置为 String,但是如果我将其更改为 int,则数据库中的结果条目不是我的输入,而是 0x300....

标签: php mysql mysqli


【解决方案1】:

好的,Joni 的评论就是答案,我认为 hex2bin 只是一种使十六进制编码字符串可读的方法,但我没有意识到它将十六进制值压缩为一个足够短的字符串以存储为二进制.感谢 joni 和 tkausl 忍受我在 php 和管理 stackoverflow 问题方面的无能 :)

编辑:我无法关闭这个问题,因为答案是作为评论发布的,对此感到抱歉。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2018-01-26
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多