将 Redis 字符串转换为二进制
Converting Redis String to binary
我想使用位域将数据存储在redis中。我得到的字符串是 "|\x00\x82"
我尝试用这个
将 ASCII 字符转换为二进制
for (let i = 0; i < map.length; i++) {
let byte = map[i].charCodeAt(0).toString(2).padStart(8, "0");
bString += byte;
}
这样的结果是01111100 00000000 11111111 11111101
但是字符串中只有三个字符。前两个匹配,我不知道其他两个是什么。当我尝试存储其他内容但在 redis-cli 中它发生变化时,它甚至没有改变。我注意到当最高有效位为 1 时会发生这种情况。我尝试使用无符号和有符号整数。
如果你想在 Redis 中读写二进制数据,你可以使用 Node Redis 的缓冲区:
await redis.set('foo', Buffer.from([ 0, 1, 2, 3, 4, 5 ]))
let result = await redis.get(commandOptions({ returnBuffers: true }), 'foo')
console.log(result) // <Buffer 00 01 02 03 04 05>
我想使用位域将数据存储在redis中。我得到的字符串是 "|\x00\x82"
我尝试用这个
for (let i = 0; i < map.length; i++) {
let byte = map[i].charCodeAt(0).toString(2).padStart(8, "0");
bString += byte;
}
这样的结果是01111100 00000000 11111111 11111101
但是字符串中只有三个字符。前两个匹配,我不知道其他两个是什么。当我尝试存储其他内容但在 redis-cli 中它发生变化时,它甚至没有改变。我注意到当最高有效位为 1 时会发生这种情况。我尝试使用无符号和有符号整数。
如果你想在 Redis 中读写二进制数据,你可以使用 Node Redis 的缓冲区:
await redis.set('foo', Buffer.from([ 0, 1, 2, 3, 4, 5 ]))
let result = await redis.get(commandOptions({ returnBuffers: true }), 'foo')
console.log(result) // <Buffer 00 01 02 03 04 05>