C++ 内存常识学习----(一)

原创 2012年03月21日 17:30:02


内存中16进制转化为10进制的问题

假如内存中有如一段内存:
ff ff 32 56 20 05 06 07 08 09 0a 0b 0c ,需要把32 56读出为unsigned short int,求这个int值


typedef union _Hex
{
    unsigned short uNum;
    struct _half
    {
        unsigned char height;
        unsigned char low;
    }half;
}HexToInt;


    char buffer[25] = {0};
    int iIndex = 0;
    buffer[iIndex++] = 0xff;
    buffer[iIndex++] = 0xff;
    buffer[iIndex++] = 0x32;
    buffer[iIndex++] = 0x56;
    buffer[iIndex++] = 0x20;
    for (int i = 5;i < 25;++i)
    {
        buffer[i] = i;
    }

way1:static_cast<>
     unsigned short *pInt = (unsigned short *)buffer32;
     int iNum = pInt[0];
way2:
     sprintf(buffer,"%x%x",unsignedCha32,unsignedCha00);//buffer is "3256"
     int iValue = 0;sscanf(buffetr,"%x",&iValue);//iValue = 50;

    //way3: use byte operation
    int M = buffer[2];
    int iLow = M & 0x0F;
    int iHei = (M>>4)&0x0F;

    //way4: use the union
    HexToInt hex;
    hex.half.height = (unsigned char)buffer[2];
    hex.half.low = (unsigned char)buffer[3];
    unsigned short uShort = hex.uNum;


作为一个计算机相关专业的飞鸽传书,我们应该在计算机组成中都学习过什么叫Little endian和Big endian。Little endian和Big endian是CPU存放数据的两种不同顺序。对于整型、长整型等数据类型,Big endian认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节);而Little endian则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节)。


参考文章:点击打开链接


C++内存常识

作者:杜思波   湖南永州人士在C++中,内存分成5个区 : 堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通...
  • dotneterbj
  • dotneterbj
  • 2010年01月30日 13:31
  • 532

HBase基础知识学习

在服务器的开发过程中,数据的存储至关重要,包括任务状态的数据、中间数据,处理的结果信息等。当数据量很大时,这些关系型数据库就必然存在瓶颈(数据库的查询,数据库的字段变更等)。本文基于分布式数据库HBa...
  • mdpmvpmao
  • mdpmvpmao
  • 2015年05月25日 13:29
  • 1025

注会—财管的学习方法

学习方法:(1)边听课边看书可以节省很多宝贵的时间,准确把握重点,并且有助于您突破难点;(2)由于教材内容每年都要发生很大的变化,修改很多错误,增减很多内容,因此,您不必在历年试题上花费太多时间,以免...
  • lifehan
  • lifehan
  • 2007年07月08日 16:18
  • 459

学习c++心得和方法

时间飞快,不知不觉这一学期就要结束了,回想这一学期的c++课程,心情十分的复杂,有许多的说不清的感觉,有喜悦也有内疚,令我感到喜悦的是我理解了c++,并且可以编写简单的程序。但内疚的是我学的一点都不好...
  • hanshuangzhi
  • hanshuangzhi
  • 2016年06月23日 09:19
  • 530

C++ 基础常识(一)

#pragma once 一般用于头文件开始,预编译时,只插入一次此头文件。 例如 头文件 "grandfather.h" #pragma once #ifndef GRANDFATHER_H #...
  • liliangshuai
  • liliangshuai
  • 2013年10月15日 17:26
  • 481

汇编学习(一)

1.需求1.工作这几年中虽然都是使用c/c++,但有时跟踪bug最后都是到汇编中,而那部分代码大部分都无法看懂2.还有最近在搞反汇编,也需要一些汇编的知识3.程序有时候运行较慢,汇编可能更直接些2.方...
  • zhang_ruiqiang
  • zhang_ruiqiang
  • 2015年07月25日 11:48
  • 621

JavaWeb学习总结(四)——服务器

一、打包JavaWeb应用   在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:    范例:将JavaWebDemoProject...
  • zw901159
  • zw901159
  • 2016年05月13日 19:30
  • 352

一、学习股市常识

MACD的精华就8个字:买小卖小,缩头缩脚。小指的是,红绿柱的堆而言; 缩头缩脚是指红绿柱的长短而言。 当股价一波比一波高时,反而红柱的堆,一堆比一堆小,证明产生了顶背离现象,应该及时卖出; 当股价...
  • sun2728
  • sun2728
  • 2017年06月22日 11:54
  • 125

关于Redis的一些常识

1.1 资料  ,最好的入门小册子,可以先于一切文档之前看,免费。作者Antirez的博客,Antirez维护的Redis推特。Redis 命令中文版, huangz同学的翻译。Redis设计与...
  • perfect2011
  • perfect2011
  • 2014年10月26日 22:29
  • 1538

C++11读书笔记—7(内存管理)

当你羡慕Java垃圾回收时,你想没想过java的垃圾回收机制靠C++实现的,而其实早先C++版本的实现。 其实C++的内存分配的难点不是把不该回收的回收了。而是有些不像指针的指针很容易识别不了。 一....
  • dajiabudongdao
  • dajiabudongdao
  • 2016年08月04日 15:39
  • 569
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 内存常识学习----(一)
举报原因:
原因补充:

(最多只允许输入30个字)