C/C++之大端小端
生活随笔
收集整理的這篇文章主要介紹了
C/C++之大端小端
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果有一個變量
unsigned?int?a=0x12345678;
?
大端Big-Endian:高字節在前?12?34?56?78
小端Little-Endian:低字節在前?78?56?34?12
現在在vs上來看看&a
由此可以看見我的pc是小端的(基本上可以斷定)
現在的PC、服務器、嵌入式產品基本以小端為主。(以前存在大端的芯片,摩托羅拉的對講機)
?
在協議中必須規定大小端,否則無法還原數據。
為什么這么說呢?還有為什么要提大端和小端的概念!
因為現在我們設備差不多都是小端的。但規定當發送網絡信息的時候得采用大端
這是規定的。所以必須這么做
下面來展示下大端小端的轉化
#include?<stdio.h> #include?<string.h>int?toByte(unsigned?int?a,?unsigned?char?*buf) {buf[0]?=?a?>>?24;buf[1]?=?a?>>?16;buf[2]?=?a?>>?8;buf[3]?=?a;return?4; } unsigned?int?fromBtytes(const?unsigned?char?*buf) {unsigned?int?result?=?0;result?+=?buf[0]?<<?24;result?+=?buf[1]?<<?16;result?+=?buf[2]?<<?8;result?+=?buf[3];return?result; }int?main() {unsigned?int?a?=?0x12345678;unsigned?char?buf[4];toByte(a,?buf);unsigned?int?b?=?fromBtytes(buf);return?0; }
通過位運算就很容易把一個數據轉化為大端或者小端。
總結
以上是生活随笔為你收集整理的C/C++之大端小端的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大三软件工程小项目-小技术集合-Qt状态
- 下一篇: linux mint 19界面美化,安装