用字节表示各种类型的数据

我们知道,在计算机中,最常见的存储单位就是字节,比如我们熟悉的int型数据,就是由4个字节构成的

我们可以在C++中通过以下代码获取各种数据类型的字节数

#include <iostream>
using namespace std;
int main(){
	cout<<"int:"<<sizeof(int)<<endl;
	cout<<"float:"<<sizeof(float)<<endl;
	cout<<"char:"<<sizeof(char)<<endl;
	cout<<"double"<<sizeof(double)<<endl;
	cout<<"long:"<<sizeof(long)<<endl;
	cout<<"long long:"<<sizeof(long long)<<endl;
	cout<<"long double"<<sizeof(long double)<<endl;
	cout<<"unsigned int:"<<sizeof(unsigned int)<<endl;
	cout<<"unsigned char:"<<sizeof(unsigned char)<<endl;
	
} 

运行结果为

各种数据类型的字节数有4,有8,也有16。在C++中,byte定义为unsigned char无符号字符。

那么,我们要如何用字节来表示其他数据呢?

比如整型数据4,它对应哪4个字节呢?

先来看一段代码

union dataunion {
	unsigned char byte[sizeof(long double)];
	double d;
	float f;
	long l;
	int i;
	long long ll;
} data;

首先要了解什么是union(联合),在这就不具体讲了,网上详解很多,它的功能是,当data中的其中一个数据被赋值时,其余所有数据都会被赋值,这么讲可能比较抽象,举个栗子,就是data中的i,也就是int型变量,被赋值比如是7时,data中的byte,d,f,l,ll,都会被同时赋值相应类型的5。

这样,我们就可以在byte数组中读取到4个字节,这4个字节就是int型整数的字节数

以下是完整代码

#include <iostream>
#include <stdio.h>
using namespace std;
union dataunion {
	unsigned char byte[sizeof(long double)];
	double d;
	float f;
	long l;
	int i;
	long long ll;
} data;



int main(){
	int k = 2000; 
	data.i=k;
	for(unsigned i=0;i<sizeof(int);i++){
		printf("byte[%d] = %d\n", i, data.byte[i]);
	}
} 

结果

这里的k可以自由更改数据类型和数据值,就可以查看所有数据是由哪些字节构成的了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值