1
私はbinary(100)
を持っていて、そのバイトの1つだけをビット単位でORしたいと思います。バイナリ(100)にビット単位でORする方法はありますか?
これはどのように考えられるでしょうか?
また、binary(100)
のバイトに値を保存するにはどうすればよいですか?
私はbinary(100)
を持っていて、そのバイトの1つだけをビット単位でORしたいと思います。バイナリ(100)にビット単位でORする方法はありますか?
これはどのように考えられるでしょうか?
また、binary(100)
のバイトに値を保存するにはどうすればよいですか?
まず、BINARY
が実際に適切なフィールドタイプであるかどうかを検討します。 BLOB
と比較すると、末尾のスペースを取り除くための潜在的に厄介な「機能」があります。 BINARY
は実際には大文字小文字を区別しないバイナリテキスト文字列になるように設計されており、任意のバイナリデータの塊ではありません。
ブロブを使用する場合は、ASCII()
と組み合わせたSUBSTRING()
演算子を使用して、必要なバイトだけを抽出し、次に|
ビット演算子を使用する必要があります。
BIGINT
)の12.5多くとしてあなたの100のバイトを治療することであるかもしれない
UPDATE TABLE SET col = CONCAT(
SUBSTR(col, 1, 1),
CHAR(ASCII(SUBSTR(col, 2, 1) | 0x80)),
SUBSTR(col, 3)
)
A、おそらく簡単な解決策を、そして個々の単語に対して直接ビット単位の操作を使用します。
@Alnitak:trueの場合、関数の制限は64ビットです。しかし、何もあなたが大きなフィールドで必要なバイト/ビットで取得するために文字列操作/キャストを行うことはできないと言います。 –
@Nerfino何を保管しようとしていますか?あなたのデータは本当に連続した100バイトでなければなりませんか?(13バイトの8バイトフィールドはどうでしょうか?)バイナリフィールドの "フィーチャー" – Alnitak
スペーストリミング機能は? – Nerfino