大家都知道,一個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了。