我正在使用Booksleeve从C#代码与Redis进行通信。代码首先从散列中检索所有字段和值:
var vals = await Redis.Hashes.GetAll(0, redisKey);
哈希包含值为long的字段。
对Hashes.GetAll的调用将字段值作为字节数组返回。问题是,如何将此字节数组转换为C#long ?
例如,如果我使用Hashes.GetInt64来检索值,我会回到9684,这是正确的。但是我无法将检索到的字节数组转换为long,以便它匹配此值:
BitConverter.ToInt64(redisHashValue, 0) throws ArgumentException
BitConverter.ToInt32(redisHashValue, 0) returns 876099129
BitConverter.ToInt16(redisHashValue, 0) returns 13881
答案 0 :(得分:1)
好吧,首先将字节数组转换为字符串似乎可以解决问题:
long.Parse(Encoding.UTF8.GetString(redisHashValue));
但是有更好的解决方案吗?