将64个字符的十六进制字符串转换为BINARY(32)

时间:2019-03-03 12:36:56

标签: php mysql mysqli

我有一个输入形式为“ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855”(从SHA-256获得的64个十六进制字符),我想用MySqli存储在数据库中。该值应插入的列的类型为BINARY(32)。 我认为该值被解释为字符串,而不是十六进制数,因此MySQL返回“对于行y的列x数据太长”。 如何在PHP中将此字符串转换为32个字节? 我已经尝试在MySql的CONVERT函数中添加“ 0x”作为前缀,并且阅读了有关hex2bin和bin2hex的信息,它们似乎并没有满足我的要求,并且我在bind_params中尝试了字符串和int类型(int产生0x3000。 。不管输入什么)

预先感谢

1 个答案:

答案 0 :(得分:0)

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

编辑:由于答案已作为评论发布,因此我无法关闭问题,对此感到抱歉。