[英]Modifying the bits of a char according to a vector<bool>
我有一個包含很多布爾值的向量。 當我在向量中達到1時,我開始讀取接下來的8個值作為位-我想根據這8個值來修改char。
例:
我有一個char c = 0; (00000000)。
根據矢量,我的8位是(10101010)。
我該如何將這些值分配給char位? 我可以將矢量用作遮罩嗎? 如果是這樣,怎么辦?
使用移位運算符<<
。 它將位移位一定量。
例如, 5 << 2
是20
,因為向左移位101的101是10100或二十。
vector<bool> v; // plus initialization
char c;
for(size_t i = 0; i < v.size(); i++) {
c += v[i] << (v.size() - i - 1);
}
假設您要使用這個大字節序(最重要的位在前)。 如果要少字節序, (v.size() - i - 1)
更改為i
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.