C++测试电脑的数据存储模式

相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概 念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑 时,恰巧,对方的电脑是大端存储,那么,如果你直接的传输,那么对方解析的肯定就是乱码了,所以,我们 需要在传输数据之前转换成网络顺序。

这篇文章的目的不是解决上述的处理字节顺序的问题,而是, 用C语言实现测试电脑的字节存储顺序。

在C语言中有一种结构--Union,被称为“共用体”,它可以像 struct一样存储不同类型的数据,但是它在内存中所占的大小是最大的数据类型所占的字节数(这里不考虑字 节对齐的问题)。由此,我们可以利用这个数据类型判断了。

具体方法如下:

假如,现在我们 存储一个整型的变量,由于这个整型的变量占4个字节,所以,它在计算机中的存储应该是这个样子:

(0x)0001        低地址--->高地址   大端存储

(0x)0001        高地址<---低地址   小端存储

所以,我们可以取得低地址的数据,测试是1或者是0,如果是1,那么就是小端存储,如果是0,那么就是 大端存储。

下面,给出测试代码:

#include <iostream>
using namespace std;  

void checkSystemBigOrLittle(void);  

int main(void)
{
    checkSystemBigOrLittle();  

    system("pause");
    return 0;
}  

void checkSystemBigOrLittle(void)
{
    typedef union MyUnion
    {
        int i;
        char c;
    };  

    MyUnion mu;  

    mu.i = 1;  

    if(mu.c == 1)
    {
        cout<<"你的电脑是小端存储模式。。。"<<endl;
    }
    else if (mu.c == 0)
    {
        cout<<"你的电脑是大端存储模式。。。"<<endl;
    }
    else
    {
        cout<<"很抱歉,出错了。。。"<<endl;
    }
}

在我的电脑上运行的截图如下:

由此可见,我的电脑是“小端 存储”模式,所以,用这种方法,可以获取电脑的数据存储模式。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索电脑
, 存储
, 共用体
, 地址存储
, 数据类型
, 地址
, 字节
, 大端小端
, socket c c++ 结构体
, c++通信结构c#struct
, struct乱码
, 顺序
, 大端模式
小端模式
数据库存储过程测试、数据存储模式、小米4c usb存储模式、c 数据存储、c调用数据库存储过程,以便于您获取更多的相关知识。

时间: 2024-10-29 15:38:33

C++测试电脑的数据存储模式的相关文章

科学家发现第三种磁性:或改变电脑数据存储方式

据国外媒体报道,美国麻省理工学院(MIT)的研究人员发现了一种新物质,拥有第三种磁性状态.麻省理工学院称之为"液态自旋量子",他们表示这种新物质将改变电脑的数据存储方式. 量子自旋液体将有可能消除量子位周围物质中的污点,而这些污点有可能在量子计算中突然改变量子状态.英国<自然>杂志报道称,液态自旋量子是一种固态晶体,但它的磁态却呈液态.与其他两种磁性不同,液态自旋量子的单个粒子磁性取向始终处于变化之中,与真正液体中的分子运动类似. 麻省理工学院的物理学教授Young Lee

《Android和PHP开发最佳实践》一2.6 Android数据存储

2.6 Android数据存储 前面刚介绍过上下文对象的使用,其最重要的功能之一,就是用于存储应用运行期间产生的中间数据.接下来,我们来讨论Android应用中持久化类型数据的存储方案.对于移动互联网应用来说,我们经常把核心数据存储在服务端,也就是我们常说的"云端",但是在实际项目中也会经常使用到Android系统内部的数据存储方案,接下来让我们认识一下几种最常用的数据存储方案. 2.6.1 应用配置(Shared Preferences) 在Android系统中,系统配置(Share

胖子哥的大数据之路(二)- 大数据结构化数据存储应用模式

一.楔子 胖子哥是我网名,叫了很多年的网名,网名的来历与自己的沧桑和身材有关,不知是IT改变了我,显得苍老,还是我本就苍老,顺应了IT行业的需要.25岁那年,曾被跟我一样高的漂亮美眉叫叔叔,从此再也不敢打小姑娘的注意,走上了重口味热爱阿姨级别女性的不归路:曾被三十五.六岁的同事阿姨说苍老:看你也就三十五六吧,那年我25:周一的时候,还有一个60后的同事问及我的年龄,他很含蓄的,明显带着保留的口吻问我:你是75年的吧?因为他一直认为和我一般大.然后...然后泪奔.关于体型方面也是个悲剧.三围相等,

java-通过串口发送到电脑的数据如何存储到电脑端为txt格式

问题描述 通过串口发送到电脑的数据如何存储到电脑端为txt格式 通过串口发送到电脑的数据如何存储到电脑端为txt格式,用C来写还是用java或者c++ 解决方案 编程语言不重要,C/C++有相应的API,JAVA有相应的工具包,只用收到数据,然后写入文件就OK了

Avere:颠覆数据存储的新模式

如果所谓的"大数据"正在经历演变,那么下一阶段将是这样的:有一家公司,它不仅可以储存大量的复杂数据文件,还可以提供快速检索和数据处理,以帮助了解那些信息. "所有人都在讨论大数据,而一提到大数据,他们立刻就会想到储存这些信息所需要的容量,"罗恩·比安基尼(Ron Bianchini)如是说,"他们不会想,一旦你获得所有数据,你该如何处理?如何保持性能?"简而言之,这正是比安基尼在2008年创立数据存储和处理公司Avere时的真正用意.在担任Ave

SaaS多租户模式数据存储方案比较

云计算多租户几乎用于所有软件即服务 (Software as a Service, SaaS) 应用程序,因为计算资源是可伸缩的,而且这些资源的分配由实际使用决定.话虽如此,用户可以通过 Internet 访问多种类型的 SaaS 应用程序,从小的基于 Internet 的小部件到大型企业软件应用程序.根据存储在企业网络之外的软件供应商的基础架构上的数据不同,安全需求也在不断增长.应用程序需要多租户是有许多原因的,其中最明显的原因就是成本:在大多数情况下,为每个客户增加几个服务器和一个数据库是远

Greenplum 清理垃圾、修改存储模式(行列变换) 平滑方法 - 交换数据、交互分区

标签 PostgreSQL , Greenplum , 交换分区 , 清理垃圾 , 存储格式变更 背景 1.在使用Greenplum的过程中,如果业务会经常对数据进行更新,删除,插入,可能导致数据出现膨胀. <如何检测.清理Greenplum膨胀.垃圾 - 阿里云HybridDB for PG最佳实践> <Greenplum 列存表(AO表)的膨胀.垃圾检查与空间收缩> 2.用户在建表的时候,存储模式选择不当,但是业务已经运行了一段时间,表里面已经写入了大量的数据. 3.用户在建表

吞噬大数据存储领域新机制——NoSQL模式解析

在过去几年,一种新兴的大型数据存储机制正吞噬大数据存储市场.这种存储解决方案与传统的RDBMS有显著的区别,它们被称之为NoSQL. 在NoSQL世界中有以下关键的成员,包括 ●Google BigTable.HBase.Hypertable ●Amazon Dynamo.Voldemort.Cassendra.Riak ●Redis ●CouchDB.MongoDB 而这些解决方案又有一些共同的特点 ●基于键-值存储 ●系统运行在海量的普通机器上 ●数据在经过分区和复制后分布在集群中 ●放宽对

一篇文章彻底明白Hive数据存储的各种模式

Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据;而元数据是用来存储表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等.下面分别来介绍. 一.Hive的数据存储 在让你真正明白什么是hive 博文中我们提到Hive是基于Hadoop分布式文件系统的,它的数据存储在Hadoop分布式文件系统中.Hive本身是没有专门的数据存储格式,也没有为数据建立索引,只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据.所