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则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节)。


参考文章:点击打开链接


相关文章推荐

硬件常识] 内存常见故障九例

  • 2013年12月31日 08:46
  • 17KB
  • 下载

Android图片内存优化小常识

系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOf...

Linux内存管理常识

1、地址管理 2、分段管理 3、分页管理 4、Linux内存管理

谈下自己认识的c++常识!

字面常量 文字常量是文字数字插入代码。他们是常量,因为你不能改变他们的价值观。 int x = 5; // 5 is a literal constant 文字常量可以有后缀,确定其类型...

C/C++中的整型常识

很多人对C/C++中的整型不太了解,导致代码移植的时候出现问题,本人在此总结一下: a. C/C++对整型长度的规定是为了执行效率,将int定义为机器字长可以取得最大的执行速度; b. C...

C、C++、Java的基础常识介绍

1、C        C 是20世纪70年代初由贝尔实验室开发,最初为UNIX系统设计的程序开发语言,后来逐步脱离UNIX而成为独立的开发语言,并有ANSI协会进行标准化。其显著特点:        ...
  • wqthaha
  • wqthaha
  • 2014年03月10日 13:42
  • 714

C++常识

1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”? 答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量...

C/C++常识

1 C语言中的数据类型1.1 基本类型 整型(int) 字符型(char) 实型 单精度实型(float) 双精度实型(double) 1.2 构造类型 数组类型 结构类型(struct) 联合类型...

C++ 的那些小常识

学习了一段时间的C++,慢慢发现整理出来了一些零零散散的小常识。`std::cin >> x1 >> x2 >> x3;` 输入三个以空格键分隔开的数值分别赋给 x1, x2, x3, 并按回车键结束...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 内存常识学习----(一)
举报原因:
原因补充:

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