C++:如何把一個int轉成4個字節?


大家都知道,一個int 或 unsigned int是由4個字節組成的,(《C/C++學習指南》,第3章,第3.2.3節:變量的內存視圖)

  例如,

      int   n  =  sizeof( int) ;   // n為4

 

大家也能夠清晰明白地看到內存里,那4個字節就在那,(《C/C++學習指南》,附錄:VC2008調試方法)  

但問題是:如何在代碼里轉成4個字節呢?

 

方法1:memcpy

這種方法很暴力,也不科學。大家先試一下。

unsigned int a = 0x12345678;

unsigned char buf[4];

memcpy(buf,  &a,  4);

觀察buf數組的4個元素的值,是不是就是0x78  0x56  0x34  0x12 (嗯,小端的,這就是缺陷,我們想要的結果其實是 buf[0]=0x12  buf[1]=0x34  buf[2]=0x56 buf[4]=0x78)

 

方法2:正規方法  (《C/C++學習指南》,第6章,第6.8節)

buf[0]  = a >> 24;     

buf[1] = a >> 16;

buf[2] = a >> 8;

buf[3] = a;

用你的VC看一下,是不是正合你意。直接在調試狀態下看,別再printf了。

 

https://blog.csdn.net/iamshaofa/article/details/44243649


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM