Redis键是二进制安全的。我想用C#把二进制数据存入Redis中。我的客户端不支持写入二进制键,使用键是有道理的。但我只是在瞎搞,告诉我怎么做。
如何将一个原始的byte[]转换为字符串?起初我想将byte[]转换为utf8字符串,但Unicode有一些检查来判断它是否有效。所以原始的二进制应该会失败。
实际上,我试过了。没有失败,反而得到了奇怪的结果。我的主要问题是如何将原始的
代码
如何将一个原始的byte[]转换为字符串?起初我想将byte[]转换为utf8字符串,但Unicode有一些检查来判断它是否有效。所以原始的二进制应该会失败。
实际上,我试过了。没有失败,反而得到了奇怪的结果。我的主要问题是如何将原始的
byte[]
转换为等效的字符串?也就是将原始的byte[]作为字符串,而不是编码为base32/64/hex或其他格式。我的次要问题是为什么我得到了一个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);
Output
False 512 256