私はVARBINARY(16)
にIPアドレスを保存したいと思います。バイナリアドレスは文字列'01001010010100101001010010100101'
です。文字列 '010101010'をPHPの実際のバイナリ文字列に変換する方法
私はそれをMySQLに挿入します。私はこれが自動的に変換されないことを認識します。
PHPマニュアルを検索した後、私はこの機能がないことに驚いています。
バイナリ文字列をVARBINARY
に変換する方法についてのヘルプが必要です。
私はVARBINARY(16)
にIPアドレスを保存したいと思います。バイナリアドレスは文字列'01001010010100101001010010100101'
です。文字列 '010101010'をPHPの実際のバイナリ文字列に変換する方法
私はそれをMySQLに挿入します。私はこれが自動的に変換されないことを認識します。
PHPマニュアルを検索した後、私はこの機能がないことに驚いています。
バイナリ文字列をVARBINARY
に変換する方法についてのヘルプが必要です。
おかげで、あなたのすべてを長整数アドレスを変換します!しかし、私はよりよい解決策を見つけたと思う:誰かが6年前、PHPマニュアルページに掲載:
http://php.net/manual/en/function.pack.php#93085
<?php
function bin2bstr($input)
// Convert a binary expression (e.g., "100111") into a binary-string
{
if (!is_string($input)) return null; // Sanity check
// Pack into a string
return pack('H*', base_convert($input, 2, 16));
}
function bstr2bin($input)
// Binary representation of a binary-string
{
if (!is_string($input)) return null; // Sanity check
// Unpack as a hexadecimal string
$value = unpack('H*', $input);
// Output binary representation
return base_convert($value[1], 16, 2);
}
// Returns string(3) "ABC"
var_dump(bin2bstr('01000001 01000010 01000011'));
// Returns string(24) "010000010100001001000011"
var_dump(bstr2bin('ABC'));
?>
これは、機能inet_ntoa
とconv
を組み合わせて実行できます。
mysql> select inet_ntoa(conv('01001010010100101001010010100101',2,10));
+----------------------------------------------------------+
| inet_ntoa(conv('01001010010100101001010010100101',2,10)) |
+----------------------------------------------------------+
| 74.82.148.165 |
+----------------------------------------------------------+
1 row in set (0.00 sec)
よりオーバー、文字列の結果はBINARY
に変換することができます。
mysql> select CAST(inet_ntoa(conv('01001010010100101001010010100101',2,10)) AS BINARY);
+--------------------------------------------------------------------------+
| CAST(inet_ntoa(conv('01001010010100101001010010100101',2,10)) AS BINARY) |
+--------------------------------------------------------------------------+
| 74.82.148.165 |
+--------------------------------------------------------------------------+
1 row in set (0.00 sec)
また、このBINARY
文字列を簡単にUPDATE
またはINSERT
を使用してVARBINARY(16)
列に入れることができます。
は、IPアドレスのバイナリ表現の結果ですか?結果はvarbinary値ですか? – Pred
すみません。コンテンツは元のURLからコピーされます。 – Walkinraven