根據您的規格,0b0000001x
最有可能的意思是「這是一個二進制數,即比特序列」,並x
是根據該行的當前狀態,你應該設置位或清除。 Builtin binary literals are only supported in C++14 or above,在C++ 11中,它們可以作爲用戶定義的文字實現,在C和較舊版本的C++中,您需要手動計算該值(或者可以使用實現此功能的編譯器作爲非標準擴展) gcc和clang都這麼做)。
如果我正確地讀這篇文章,字節順序是正確的,得到的字節值應爲:
payload[0] = 2 + (is_line_available ? 1 : 0);
而且,你是不是對分配任何空間,所以你會寫進入隨機記憶。您需要分配一些內存:
靜態分配,工作在C和C++:
unsigned char payload[24]; // or whatever your message's length is
C風格的動態分配(確保釋放它大功告成後):
unsigned char *payload = malloc(24);
...;
free(payload);
C++推薦的方法:
#include <vector>
std::vector<unsigned char> payload;
payload.reserve(24);
...;
'0b0000001x'不是C.在你規範有效的數字表達它最有可能意思是「這是一個二進制數,即一系列比特」,而「x」是你應該根據當前狀態設置或清除的位。如果我正確讀取並且字節順序正確,那麼結果字節值應該是'(2 +(is_line_available?1:0))'。 (另外,你沒有爲'payload'分配任何空間,所以你會寫入隨機存儲器中。) – DCoder 2012-08-11 14:29:22
@DCoder:+1作爲回答的帖子 – Aziz 2012-08-11 14:30:29