社区
C语言
帖子详情
如何存储包含null的二进制数据
haoahui
2010-04-02 03:17:37
// 开辟一块内存
BYTE *tmp=NULL, *tmp1;
tmp = malloc( 560);
// 给上述内存块赋值(二进制),存在其中某些内存空间不被赋值(null)的情况,且个数与位置都不固定
某函数(tmp);
现在要将tmp内存中二进制数据(包括其中的null)保存到数据库(sqlite3)中, 如何处理
开发环境:
OS:linux
语言:C语言
硬件:OMP3530
在线等您回答
...全文
281
19
打赏
收藏
如何存储包含null的二进制数据
// 开辟一块内存 BYTE *tmp=NULL, *tmp1; tmp = malloc( 560); // 给上述内存块赋值(二进制),存在其中某些内存空间不被赋值(null)的情况,且个数与位置都不固定 某函数(tmp); 现在要将tmp内存中二进制数据(包括其中的null)保存到数据库(sqlite3)中, 如何处理 开发环境: OS:linux 语言:C语言 硬件:OMP3530 在线等您回答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
haoahui
2010-04-02
打赏
举报
回复
[Quote=引用 16 楼 vivo01 的回复:]
你要保存的值除了null以外如果都是正数或0的话,那你可以将null的值用一个宏替换,比如一个负值
#define NULL -1
读取的时候如果是-1就判断为空值
[/Quote]这种办法行不通 -1就是255啊。。。
comeon010
2010-04-02
打赏
举报
回复
把所有的数据进行一个异或存入,读出后再异或回来。
a^0xcc
haoahui
2010-04-02
打赏
举报
回复
[Quote=引用 16 楼 vivo01 的回复:]
你要保存的值除了null以外如果都是正数或0的话,那你可以将null的值用一个宏替换,比如一个负值
#define NULL -1
读取的时候如果是-1就判断为空值
[/Quote]我试试
亦枫Leonlew
2010-04-02
打赏
举报
回复
你要保存的值除了null以外如果都是正数或0的话,那你可以将null的值用一个宏替换,比如一个负值
#define NULL -1
读取的时候如果是-1就判断为空值
haoahui
2010-04-02
打赏
举报
回复
[Quote=引用 9 楼 toborac 的回复:]
不要用 strxxx 那一组函数 用memxxx那一组
[/Quote]我没用strXXX 都是指定的长度
haoahui
2010-04-02
打赏
举报
回复
[Quote=引用 13 楼 loaden 的回复:]
比如:
BYTE *tmp=NULL, *tmp1;
tmp = malloc( 560);
你申请的内存大小是560,那么,刚才的那个长度也指定:560 就可以将数据都写进去了。
[/Quote]sqlite3_bind_blob(stat, 1, fvModule, 560, NULL);这是我的代码 没用的。。。
老邓
2010-04-02
打赏
举报
回复
比如:
BYTE *tmp=NULL, *tmp1;
tmp = malloc( 560);
你申请的内存大小是560,那么,刚才的那个长度也指定:560 就可以将数据都写进去了。
老邓
2010-04-02
打赏
举报
回复
sqlite3_bind_blob( stat, 1, buffer,
strlen(buffer)
, NULL );
红色处不可用strlen,因为遇到null就截断了。
要自己指定一个长度。
haoahui
2010-04-02
打赏
举报
回复
[Quote=引用 6 楼 cattycat 的回复:]
数据库中有个字段能保存二进制信息,你BYTE的直接写进数据库就行,只要你记得长度就行。这个字段不能是char类型。
你说的null值就是0吧。
[/Quote]读到null就会停止了。。。
haoahui
2010-04-02
打赏
举报
回复
谢谢各位以上的回答 我数据库里字段的类型是BLOB 也是用sqlite3_bind_blob来做的 但null后面的数据不会被存入数据库 怎么办!!!
toborac
2010-04-02
打赏
举报
回复
不要用 strxxx 那一组函数 用memxxx那一组
wesleyluo
2010-04-02
打赏
举报
回复
[Quote=引用 6 楼 cattycat 的回复:]
数据库中有个字段能保存二进制信息,你BYTE的直接写进数据库就行,只要你记得长度就行。这个字段不能是char类型。
你说的null值就是0吧。
[/Quote]
同意,你不用管内存中是什么数据,只要你知道长度 N,然后往文件中写入内存的N个空间就行咯。
老邓
2010-04-02
打赏
举报
回复
http://www.xue5.com/itedu/200707/118810.html
写二进制数据
sqlite3 * db;
int result;
char **errmsg =NULL;
result = sqlite3_open("test.db", &db );
if( result != SQLITE_OK )
{ return -1;}
result = sqlite3_exec( db,"create table tb( ID integer, content blob)", NULL, NULL, errmsg);
if(result != SQLITE_OK){printf("erro");}
char *buffer;//要写的二进内容,也可以从文件读出来
buffer=new char[1024*1024];
for(int i=0;i<1024*1024;i++)buffer[i]='a';
sqlite3_stmt *stat;//写二进制数据时要用的结构
sqlite3_prepare( db, "insert into tb( ID, content) values( 10, ? )", -1, &stat, 0 );//准备插入数据
sqlite3_bind_blob( stat, 1, buffer, strlen(buffer), NULL ); //把内容和字段绑定
result=sqlite3_step( stat );//执行
sqlite3_finalize( stat );释放内存
sqlite3_close( db );
cattycat
2010-04-02
打赏
举报
回复
数据库中有个字段能保存二进制信息,你BYTE的直接写进数据库就行,只要你记得长度就行。这个字段不能是char类型。
你说的null值就是0吧。
haoahui
2010-04-02
打赏
举报
回复
大家帮帮我 头痛死了 明天不想加班啊
haoahui
2010-04-02
打赏
举报
回复
这样,
比如有个相机,我写了个驱动,相机拍摄,然后模数转换成二进制 这里的tmp接收这些二进制数据,
问题是这个tmp中的数据不是连续的 比如说着个tmp长度为3,第一块内存空间里是1,第二块内存空间里是null,低三块空间里是0 也就是说 tmp 1 null 0 现在我要把1 null 0 这个模型数据保存到sqlite3中 在保存的过程中 遇到null 就认为数据结束了 只能把1保存到数据库中
haoahui
2010-04-02
打赏
举报
回复
类型为BYTE ,自己定义的 typedef unsigned char BYTE;
jbz001
2010-04-02
打赏
举报
回复
还有,你的意思我没看明白
jbz001
2010-04-02
打赏
举报
回复
申请动态内存时没有指定数据类型
Bson:Bson是一个Java库,可用于将Java对象转换为
二进制
数据
以进行
存储
传输使用更少的空间
替代Json的
数据
格式 通过
二进制
的方式节省空间,相比Json,不保存key,只保存value。value根据实际的类型转换为
二进制
保存。 二级制保存 文件本身
包含
格式信息,但只
包含
层级和基本类型,不
包含
属性名 使用方式 Bson bson = new Bson(); 文档梳理 【腾讯文档】Bson格式 设计 1字节Version + 对象
数据
对象
数据
组成: 开头1字节+
数据
+结束1字节。起到括号作用 类型 用1字节代表类型
数据
高2位有特殊含义 ——数组[10],Map[11],Set[01],普通[00] 第3高位代表超长(非普通
数据
,后接1或4字节来表征数组长度,4字节全1代表不定长) 不定长只能用在最外层的
数据
中,中间的
数据
必须标识长度。 低5位(32中)为类型信息:Object,8种基础类型,
null
,字符串 比较特殊的是Set和Map; Set和数组类似; Map则是 k
JavaScript程序设计课件:数值型.pptx
JavaScript程序设计 数值型 2.4.1 数值型 1、
数据
类型简介 在计算机中,不同的
数据
所需占用的
存储
空间是不同的,为了便于把
数据
分成所需内存大小不同的
数据
,充分利用
存储
空间,于是定义了不同的
数据
类型。 2.4.1 数值型 2、
数据
类型分类 2.4.1 数值型 2、
数据
类型分类 简单
数据
类型 说明 默认值 Number 数字型,
包含
整值型和浮点型,如20,0.22 0 Boolean 布尔值类型,如true,false,等价于1和0 false String 字符串类型,如“张三”,字符串都带有引号 “” Undefined Var a,声明了变量但是没有赋值 undefined
Null
Var a=
null
,声明了变量为空值
null
2.4.1 数值型 3、数值型 js中数字类型既可以用来保存整数值,也可以用来保存小数(浮点数)。 2.4.1 数值型 4、数值型进制 最常见的进制有
二进制
,八进制,十进制,十六进制 在js中八进制前面加0,十六进制前面加0x 2.4.1 数值型 5、数值型范围 js中数值的最大值和最小值 2.4.1 数值型 6、数值型特殊值 I
将
二进制
数据
嵌入json的几种方法
1. 在 xml 中嵌入
二进制
数据
的几种方法通过外部实体和标记法的方式表示
二进制
数据
;使用 MINE
数据
类型来表示
二进制
数据
(并把
数据
用 Base64 编码后放入CDATA节中);将
二进制
数据
嵌入 CDATA 节中,编码格式由用户自己定义。其中,第一种方法可以使用 XML 中的 DTD 规范来指定一个外部的 dtd 文件;第二种方法是把
二进制
数据
用 Base64 编码后,保...
sqlite3 的
二进制
数据
插入与获取
sqlite3
数据
库的
二进制
数据
插入读取
java zip转
二进制
_java-将httppost响应中的zip文件下载并保存为ANDROID中的
二进制
数据
...
提前致谢..首先,我要这个用于android.我必须发送一个带有zip文件的http发布请求,该zip文件
包含
一个
包含
名称列表的xml文件.现在,根据我发送的名称列表,服务器将向我发送一个zip文件的
二进制
数据
,我必须将该
二进制
数据
(响应)另存为一个zip文件.问题是,当我将此
二进制
数据
另存为zip文件时,则无法提取该zip.我认为这也可能是一些字符集问题.我需要将接收到的
二进制
数据
转换为某些字符...
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章