nodejs可以通过nodejs-redis模块来操作redis数据库,使用redis.createClient()连接redis数据库,可以直接将二进制数据存入数据库。通过redis-cli读取。

nodejs redis 读写二进制数据

通过nodejs-redis模块我们可以很方便的操作redis,npm上的说明如下:This is a complete Redis client for node.js. It supports all Redis commands and focuses on performance.

redis是支持二进制数据的,通过nodejs写入二进制数据的代码如下:'use strict';

var redis = require("redis")

var client = redis.createClient();

var array = new Uint8Array(4);

array[0] = parseInt(Math.random()*0xFF);

array[1] = parseInt(Math.random()*0xFF);

array[2] = parseInt(Math.random()*0xFF);

array[3] = parseInt(Math.random()*0xFF);

console.log(array);

var buf = new Buffer(array);

console.log(buf);

client.set('test', buf, function(err, response) {

console.log('set OK, response:' + response);

});

上面代码的输出以及通过redis-cli读取的结果分别如下:$ node redisWithBinary.js

Uint8Array { '0': 74, '1': 245, '2': 237, '3': 116 }

set OK, response:OK

$ redis-cli get test

"J\xf5\xedt"

注意: redis-cli对于可打印内容和不可打印的字符分别使用字符和十六进制转义进行显示。

使用nodejs读取redis中的二进制数据,代码如下:client.get('test', function(err, res) {

console.log('res typeof:'+ typeof res);

console.log('res:' + res);

var buf = new Buffer(res);

console.log(buf);

});

输出结果:res typeof:string

res:J��t

res.charCodeAt(i): 0x4a

res.charCodeAt(i): 0xfffd

res.charCodeAt(i): 0xfffd

res.charCodeAt(i): 0x74

问题出现了:

1. 通过get读取出来的数据类型是string,并不是raw data

2. 将该string转为Buffer后,对于不认识的字符直接转换为ef bf bd,通过测试,在设置了encoding格式为ascii和binary后,输出都是,同样是转为了固定的一个值fd

对于res字符串中的内容,我们可以通过下述代码进行仔细确认:client.get('test', function(err, res) {

console.log('res typeof:'+ typeof res);

console.log('res:' + res);

for (var i =0; i < res.length; i++) {

console.log('res.charCodeAt(i): 0x'+res.charCodeAt(i).toString(16));

}

});

输出结果:res typeof:string

res:J��t

res.charCodeAt(i): 0x4a

res.charCodeAt(i): 0xfffd

res.charCodeAt(i): 0xfffd

res.charCodeAt(i): 0x74

mysql 二进制 nodejs_nodejs怎么存取2进制数据到数据库?相关推荐

  1. python socket发送16进制数据_python socket以16进制的数据进行传递与解析

    参考:http://m.blog.csdn.net/blog/JasonQue/8256424 具体的struct模块的解释可以参照上面的链接. struct.pack也就是将数据按照二进制的格式进行 ...

  2. python16进制字节序_Python-十六进制数据传递与接收

    实际应用场景 python客户端与服务端(c程序)进行通讯,需接收服务端发来的16进制码流,并对16进制数据进行解码,得到相应字段的数据,并可以将数据打包成对应格式的码流发送给服务端,多字节整数传输采 ...

  3. 区块链100讲:16进制数据的编码/解码算法

    众所周知,计算机存储和处理的都是二进制数据.为了简洁,实际上使用最多的是二进制的一个变种--16进制.比如笔者的名字叫嘉文,中文拼音是jiawen(全小写),在计算机里存储的就是 6A69617765 ...

  4. 【MoreWindows工作笔记3】 使用cout/pintf输出16进制,8进制,2进制数据

    工作后比较忙,没大块的时间来酝酿博客的写作,所以随时记点笔记,一来方便自己查阅,二来也督促自己学习和总结.如果能对大家有所帮助,就更加开心了. 使用cout/pintf输出16进制,8进制比较常见,输 ...

  5. yj.微信小程序 接收蓝牙设备返回的16进制数据转为中文显示问题

    在此记录遇到的问题,若遇到同样的问题,希望可以帮到各位. 我从蓝牙设备获取的数据为16进制    需要转为中文   同样还有另一种16进制 unicode16进制数据  搜索的大部分都是直接转换的方法 ...

  6. python socket发送16进制数据_Python UDP Socket 16进制数据发送

    注:此篇文章首次发表于我的一篇CSDN博客里边,现转载于此. 今天琢磨了一下Python UDP Socket 16进制数据发送. 原以为UDP发送和接受的都是字符,怎么能够发送16进制?但细想,其实 ...

  7. 十进制数与N进制数据的转换

    十进制数与N进制数据的转换 问题描述:将从键盘输入的十进制数转换为N(如二进制.八进制.十六进制)进制数据. #include<iostream> using namespace std; ...

  8. [工具]-C语言中字符串的形式打印16进制数据

    C语言中字符串的形式打印16进制数据. 这样写,输出更直观些 #define PRINT_BUF_MAX (32) #define TAG_STRING_MAX (32) static void pr ...

  9. php接收16进制数据,PHP_PHP 通过Socket收发十六进制数据的实现代码,最近在php下做关于Socket通讯的 - phpStudy...

    $sendStr = '30 32 30 34 03 30 33';  // 16进制数据 $sendStrArray = str_split(str_replace(' ', '', $sendSt ...

最新文章

  1. 5G NR — 动态频谱共享
  2. Java利用POI生成Excel强制换行
  3. LOJ - #117. 有源汇有上下界最小流(有源汇有上下界的最小流)
  4. ffmpeg 常用基本命令和ffmpeg处理RTMP流媒体的常用命令
  5. Jenkins 随笔
  6. 大数据技术之kafka (第 3 章 Kafka 架构深入 ) offset讲解
  7. Nginx+Tomcat搭建集群环境
  8. 音视频开发(29)---深入浅出理解视频编码H264结构
  9. Python——eventlet.wsgi
  10. 微鲸科大讯飞、出门问问合作 TA的语音功能怎么样?
  11. Webbrowser若干点
  12. 【笔试or面试】美团2014校园招聘
  13. Unity将相机内容输出成图片
  14. 物联网使用什么数据库_如何使用关系数据库实现大规模物联网
  15. SpringBoot SwaggerUi加密
  16. 图解网络(三)——TCP篇07
  17. ECNU || 宇恒棋
  18. NOI刷题1.7(09)答案
  19. 发明计算机作文300字,四年级我的发明作文300字
  20. OpenCV实战——角度测量

热门文章

  1. 桥接设计模式(Bridge)
  2. 子元素个数不定的垂直居中布局
  3. Looper,Handler, MessageQueue
  4. Flash中图片的逐步加载
  5. 【bzoj4321】queue2 dp
  6. 【ASP.NET】ASP.NET如何发布Web项目
  7. 将字符串使用md5加密
  8. UGUI 与 Spine 的完美结合
  9. ASP.NET MVC RedirectToRoute类[转]
  10. 交换机端口呈现err-disable的原因