開發一個大型工程很多時候不想去更改頭文件,但是又需要在開發後期增加
參數,除了利用原先預留的標誌位dwReserv[20],比如這裏就預留了20位;還可以將原來的參數拆分成幾個。 比如一個DWORD一共有4個字節,可以開闢每8位來儲存一個參數,之後收到的時候再取出來就行了。
例子:一個DWORD類型的參數,現在想要BIT0-BIT7 填寫colorPrimaries參數,BIT8-BIT15填寫TransferCharacteristic參數,BIT16-BIT23填寫MatrixCoefficients參數。
這些參數都是Int類型。那麼該怎麼填充呢?
int eColourPrimaries = 9;
int eTransferCharacteristic = 18;
int eMatrixCoefficients = 9;
DWORD nResult = eColourPrimaries;
DWORD nTemp = eTransferCharacteristic;
nTemp = nTemp<<8;
nResult |= nTemp;
nTemp = eMatrixCoefficients;
nTemp = nTemp << 16;
nResult |= nTemp;
簡單來說就是
nResult = eColourPrimaries | (eTransferCharacteristic << 8 ) | (eMatrixCoefficients << 16 );
那麼怎麼取對應位的數據呢?
對方收到nResult,按照約定的方式去取對應位的參數,2進制 8位全部爲1的值是255.
DWORD filter = 255;
int color1 = nResult & filter;
nResult = nResult>>8;
int trans1 = nResult&filter;
nResult = nResult>>8;
int matrix1 = nResult&filter;