zoukankan      html  css  js  c++  java
  • C++工作笔记-3种方法对数据类型进行拆分(可用于各种协议)(long int short)

    比如用Long Long存3个数据的内容。

    这里要知道大小端的知识点。

    方法一是用位运算;

    方法二是用指针;

    方法三是结构体(本质上也是指针);

    运行截图如下:

    源码如下:

    main.cpp

     1 #include <iostream>
     2 using namespace std;
     3  
     4 struct SplitLongLong{
     5     short shortValue2;
     6     short shortValue1;
     7     int intValue;
     8 };
     9  
    10 void main(){
    11  
    12     long long myTestLongLong=1234605616436508552;
    13     cout<<"hexadecimal original data: "<<hex<<"0x:"<<myTestLongLong<<endl;
    14     cout<<"decimalism original data:"<<dec<<myTestLongLong<<endl<<endl;
    15  
    16     //The first method!    
    17     cout<<"The first method!"<<endl;
    18     int method1_int=(int)(myTestLongLong>>4*8);        //Little-endian
    19     short method1_short1=(short)(myTestLongLong>>2*8);
    20     short method1_short2=(short)(myTestLongLong);
    21  
    22     cout<<"hexadecimal 0x"<<hex<<method1_int<<"   0x"<<method1_short1<<"   0x"<<method1_short2<<endl;
    23     cout<<"decimalism "<<dec<<method1_int<<"  "<<method1_short1<<"  "<<method1_short2<<endl<<endl;
    24  
    25     long long method1_long=((long long)method1_int<<4*8)+((long long)method1_short1<<2*8)+((long long)method1_short2);
    26     cout<<"hexadecimal combined data :0x"<<hex<<method1_long<<endl;
    27     cout<<"decimalism combined data :"<<dec<<method1_long<<endl<<endl;
    28  
    29     //The second method!
    30     cout<<"The second method!"<<endl;
    31     char *ptr=(char *)(&myTestLongLong);
    32     int method2_int = *(int *)(ptr+4);        //Little-endian
    33     short method2_short1 = *(short*)(ptr+2);
    34     short method2_short2 = *(short*)ptr;
    35     cout<<"hexadecimal 0x"<<hex<<method2_int<<"  0x"<<method2_short1<<"  0x"<<method2_short2<<endl;
    36     cout<<"decimalism "<<dec<<method2_int<<"  "<<method2_short1<<"  "<<method2_short2<<endl<<endl;
    37  
    38     long long method2_long;
    39     ptr=(char*)(&method2_long);
    40     *(short*)ptr=method2_short2;
    41     *(short*)(ptr+2)=method2_short1;
    42     *(int*)(ptr+4)=method2_int;
    43     cout<<"hexadecimal combined data :0x"<<hex<<method2_long<<endl;
    44     cout<<"decimalism combined data :"<<dec<<method2_long<<endl<<endl;
    45  
    46  
    47  
    48     //The third method!
    49     cout<<"The third method!"<<endl;
    50     SplitLongLong split;
    51     split=*(SplitLongLong*)&myTestLongLong;
    52     cout<<"hexadecimal 0x"<<hex<<split.intValue<<"  0x"<<split.shortValue1<<"  0x"<<split.shortValue2<<endl;
    53     cout<<"decimalism "<<dec<<split.intValue<<"  "<<split.shortValue1<<"  "<<split.shortValue2<<endl<<endl;
    54  
    55     long long method3_long;
    56     ptr=(char*)(&method3_long);
    57     *(short*)ptr=split.shortValue2;
    58     *(short*)(ptr+2)=split.shortValue1;
    59     *(int*)(ptr+4)=split.intValue;
    60     cout<<"hexadecimal combined data :0x"<<hex<<method3_long<<endl;
    61     cout<<"decimalism combined data :"<<dec<<method3_long<<endl<<endl;
    62  
    63     getchar();
    64 }
  • 相关阅读:
    笔记本连接蓝牙音箱声音异常
    fence安装中遇到的问题
    ssm整合关键
    第二章:数字系统
    第一章:计算器系统体系结构
    第二章:变量和基本类型
    第一章:开始
    第十九章:特殊工具与技术
    第十八章: 用于大型程序的工具
    第十七章:标准库特殊设施
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14132299.html
Copyright © 2011-2022 走看看