文档章节

char 数组转 int

兔之
 兔之
发布于 2016/07/09 17:28
字数 270
阅读 40
收藏 1
点赞 0
评论 0

最近遇到一个问题,需要将多个 protobuf 序列化后存为文件,于是定了如下的协议格式。规定 PB1_size 以 4 字节大小存储在文件中。

[PB1_size][PB1_body][PB2_size][PB2_body]...[]

PBn_size 调用 fstream 流式操作以下列方式 write 写入

# include <fstream>
# include <iostream>
// msg 为 protobuf 结构体

fstream fs;
while (pb 未写完)
{
    uint32_t pb1_size = msg.ByteSize();
    fs.write(char*(&pb1_size), 4);
    msg.SerializeToOstream(&fs);
}

char*(&pb1_size) 取得 uint32_t 数据最低位字节的地址并强制转换为 char*,这样可以将 pb1_size 的四个字节以从低到高的方式写入文件。

读 pb 大小代码如下:

fstream fs;
char buffer[4];
fs.read(buffer, 4);
int size = atoi(buffer);

这样将 buffer 转为 size 会有问题,假设写入的 int 是 0x00000008,即 pb 大小为 8。写到文件里的二进制是 0x00000008。读到 buffer 里相当于字符串 "NUL NUL NUL BS",无法使用 atoi 来转换。

下面式例可以正常转换。

int main()
{
    char buffer_size[5];
    buffer_size[0] = 56;
    buffer_size[1] = 48;
    buffer_size[2] = 48;
    buffer_size[3] = 48;

    cout << atoi(buffer_size) << endl;
}

输入图片说明

http://blog.csdn.net/sealyao/article/details/6940245

© 著作权归作者所有

共有 人打赏支持
兔之
粉丝 66
博文 246
码字总数 95636
作品 7
深圳
程序员
CString,Char*,string 互相转换(转)

《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”0“的字符串数组 2,c_str(),返回有”0“的字符串数组 3,copy() .....................

徐燕
2011/04/15
0
0
CString,int,string,char*之间的相互转换

string 转 CString CString.format("%s", string.cstr()); char 转 CString CString.format("%s", char); char 转 string string s(char ); string 转 char char p = string.cstr(); CString......

IMGTN
2012/05/28
0
0
C++ 中int,char,string,CString类型转换(一)

c++中string到int的转换 1) 在C标准库里面,使用atoi: #include <cstdlib> #include <string> std::string text = "152"; int number = std::atoi( text.cstr() ); if (errno == ERANGE) /......

simpower
2015/08/07
0
0
CString,int,string,char*之间的转换

《C++标准函数库》中说的 有三个函数可以将字符串的内容转换为字符数组和C—string 1.data(),返回没有”0“的字符串数组 2,c_str(),返回有”0“的字符串数组 3,copy() .....................

橘子红了呐
2017/11/15
0
0
字符串的常用操作(字符串的操作用得比较多,须掌握扎实)

字符串的常用操作(字符串的操作用得比较多,须掌握扎实) Length:属性,返回字符串中的字符个数。

瑞不可挡
2011/01/08
0
0
JNI的某些数组和字符串类型转换

1、jbytearray转c++byte数组 2、jbyteArray 转 c++中的BYTE[] 3、C++中的BYTE[]转jbyteArray 4、jbyteArray 转 char * 5、char* 转jstring 下面这个没有用过,刚看到,也写进来,以后如果遇到...

robinjiang
2016/12/08
28
0
char *a 和char a[] 的区别(指针和数组的区别)

在C/C++中,指针和数组在很多地方可以互换使用,这使得我们产生一种错觉,感觉数组和指针两者是完全等价的,事实上数组和指针是有很大的区别的。 1.两者在含义上的区别。 数组对应着一块内存...

种地瓜
2016/06/02
16
0
第10章 指针(三)对地址进行分类------指针类型

我们已经知道,指针就是首地址。 在日常生活中,我们认识了一个人A,而后我们用他的电话联系他,当然关系好些,可以留下其地址,以便登门拜访。于是我们用一个本子,记录下电话和地址,这个记...

日久不生情
2017/11/07
0
0
Java——常用类(String)

【常用类】 <1>字符串相关类(String、StringBuffer) <2>基本数据类型包装类 <3>Math类 <4>File类 <5>枚举类 【String类】 <1>java.lang.String类代表不可变的字符序列。 <2>String类的常见......

野渡书生
2016/03/11
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
17分钟前
0
0
Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
1
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
今天
0
0
nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
今天
1
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
今天
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
今天
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部