从字节数组解出int64_t值
来源:互联网 发布:软件编程技术 编辑:程序博客网 时间:2024/06/05 19:11
通常解析一个int大小的变量,用下面的函数:
static inline int parseInt(char *p)
{
return ((0xff & *(p+0)) << 0)
| ((0xff & *(p+1)) << 8)
| ((0xff & *(p+2)) << 16)
| ((0xff & *(p+3)) << 24);
}
如果解析一个int64_t的变量,用下面的函数就不行:
static inline int64_t parseInt64(char *p)
{
return ((0xff & *(p+0)) << 0)
| ((0xff & *(p+1)) << 8)
| ((0xff & *(p+2)) << 16)
| ((0xff & *(p+3)) << 24)
| ((0xff & *(p+4)) << 32)
| ((0xff & *(p+5)) << 40)
| ((0xff & *(p+6)) << 48)
| ((0xff & *(p+7)) << 56);
}
而要用下面的函数才行:
static inline int64_t parseInt64(char *p)
{
return ((0xff & (int64_t)*(p+0)) << 0)
| ((0xff & (int64_t)*(p+1)) << 8)
| ((0xff & (int64_t)*(p+2)) << 16)
| ((0xff & (int64_t)*(p+3)) << 24)
| ((0xff & (int64_t)*(p+4)) << 32)
| ((0xff & (int64_t)*(p+5)) << 40)
| ((0xff & (int64_t)*(p+6)) << 48)
| ((0xff & (int64_t)*(p+7)) << 56);
}
函数里的“|”可以改成“+”,是一样的。重要的是进行类型扩展,系统默认是扩展到4个字节的宽度,这样在解64位数的时候就会出错。
- 从字节数组解出int64_t值
- int64_t
- 从整数数组中选出第二大值
- 从整数参数 x 中抽取出最高有效字节
- java 从两个数组中选出相同和不同的值
- PHP实例:从数组里筛选出重复的数据
- 从数组中选出n个数之和为k
- .net从资源下载数据并返回字节数组
- 从输出字节数组品味.NET(C#)的灵活性
- [Java] 从图片URL中读取字节数组
- Java从二进制文件读取数据到字节数组
- 从ZipInputStream类读入一个字节数组输出流
- 从指定文件(字节数组)获取内容以及获取长度
- 从字节数组中读取整型(最大四位)
- 字节数组
- 所有从字节流专成数字显示时必须反转字节数组!
- 将一个字节数组从任意字节offset开始,长为len的字节转换为整数
- 按网络字节序从字节数组中拿出8个字节拼装成一个long型
- 欢迎使用CSDN-markdown编辑器
- 培训第一天
- Oracle - 简单的 SELECT 的使用
- 矩阵算法
- QA技能树
- 从字节数组解出int64_t值
- ZeroMQ(java)中组件间数据传输(Pipe的实现)
- webstorm 2016破解方法
- Oracle透明网关的一些文章
- 有关素数
- uvc control
- leetcode-70-Climbing Stairs
- SpringMVC+Mybatis整合实例及功能分析
- R12 Mapping Between Subledger Tables, SLA and GL Tables