大端小端

本文深入探讨了计算机内存中的大端和小端存储方式,解释了它们的工作原理以及在不同平台上的差异。通过实例,读者将了解如何判断和转换字节序,这对于跨平台数据交换至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述


#include <stdio.h>

#include <string.h>
#include <iostream>
#include <WinSock2.h>
using namespace std;

#pragma comment(lib,"ws2_32.lib")


void main(){
	//大端小端
	char *buf = new char[3];

	//char buf[3]={0};
	/*
	1 字节=8 bit位
	unsigned short 2字节 = 16位
	
	十六进制:0x1234
	二进制:  0001 0010 0011 0100
	*/
	unsigned short len = 0x1234; //十进制4660

	//小端,内存高地址存储高位字节0x12  内存低地址存储低位字节0x34
	*(unsigned short*)buf = len;
	cout<<"\n\n小端:";
	printf("0x%x\n",len);
	printf("buf[0] = 0x%x, buf[1] = 0x%x\n",buf[0],buf[1]);
	cout<<buf[0]+buf[1]*256<<endl;//高位在高地址

	cout<<"\n\n大端:";
	//大端,内存高地址存储低位字节0x34  内存低地址存储高位字节0x12
	*(unsigned short*)buf = htons(len);

	printf("0x%x\n",len);
	printf("buf[0] = 0x%x, buf[1] = 0x%x\n",buf[0],buf[1]);
	cout<<buf[0]*256+buf[1]<<endl;//高位在低地址

	while(1);
}




输出

小端:0x1234
buf[0] = 0x34, buf[1] = 0x12
4660


大端:0x1234
buf[0] = 0x12, buf[1] = 0x34
4660
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值