Redisキーはバイナリセーフです。C#を使用してバイナリをredisに入れたいです。私が選んだクライアントは、キーを使用するバイナリキーの記述をサポートしておらず、それは理にかなっています。しかし、私はただ浮気しているので、これを行う方法を教えてください。
生のbyte[]を文字列に変換するにはどうすればよいですか?最初はbyte[]をutf8文字列に変換することを考えていましたが、Unicodeには有効かどうかを確認するためのチェックがいくつかあります。したがって、生のバイナリは失敗するはずです。
実際に試してみました。失敗する代わりに、私は奇妙な結果を得ました。私の主な質問は、rawbyte[]
を同等の文字列に変換するにはどうすればよいですか?のように、生のbyte []を文字列として持ち、base32 / 64 / hex/whateverとしてエンコードしません。私の重要でない質問は、これが有効なUTF8文字列ではないという例外の代わりに512バイトの文字列を取得したのはなぜですか?
コード
var rainbow = new byte[256];
for (int i = 0; i < 256; i++)
{
rainbow[i] = (byte)i;
}
var sz = Encoding.UTF8.GetString(rainbow);
var szarr = Encoding.UTF8.GetBytes(sz);
Console.WriteLine("{0} {1} {2}", ByteArraysEqual(szarr, rainbow), szarr.Length, rainbow.Length);
出力
False 512 256