Redis 密钥是二进制安全的。我想搞砸并使用 C# 将二进制文件放入 redis。我选择的客户不支持编写二进制密钥,它使用密钥,这很有意义。但是我只是在鬼混,所以告诉我我该怎么做。
如何将原始字节 [] 转换为字符串?起初我正在考虑将 byte[] 转换为 utf8 字符串,但是 unicode 有一些检查来查看它是否有效。所以原始二进制文件应该失败。
其实我试过了。我没有失败,而是得到了一个奇怪的结果。我的主要问题是如何将原始字符串转换byte[]
为等效字符串?就像将原始字节 [] 作为字符串而不是编码为 base32/64/hex/whatever 一样。我不重要的问题是为什么我得到一个 512 字节的字符串而不是一个异常说这不是一个有效的 UTF8 字符串?
代码
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);
输出
假 512 256