2016-10-30 11 views
0

ビッグエンディアン形式のuint8文字列をインクリメントする正しい方法はありますか?C:uint8ビッグエンディアン文字列の正しいインクリメント

uint8 test[] = {0,0,0,1}; 

test[3]++; //works 

を何とかも可能このように型キャストと増分です: は、例えば、私が持っていますか?

*test = (uint32) *test+1; //doesnt work... Only the first test[0] will be incremented... 

ありがとうございます。これについて

答えて

0

方法:

((uint32_t*)test)++; 

しかし、これはまだネイティブのバイトオーダーで動作します。あなたがネットワークの順でバッファを持っている場合は

、あなたはこれを行う必要があります。

uint32_t *p = (uint32_t*)test; 
uint32_t temp = ntohl(*p); 
temp++; 
*p = htonl(temp); 
関連する問題