簡體   English   中英

在C ++中將0和1的char數組轉換為字節

[英]Convert a char array of 0 and 1 to bytes in C++

我在這里有一個問題。 這聽起來對您來說微不足道,但對我而言卻並非如此,因為我在C ++中還是個菜鳥。 (也對我有限的英語知識感到抱歉)

假設我有一個char a[72]數組。 該數組填充有代表位的'0''1'a[0] = '0'a[1] = '1'a[2] = '1'等),我需要保存作為二進制文件,因此當我嘗試使用xxd -b查看此文件時,我希望看到這9個字節,就像它們在數組中一樣。

可以請任何人帶我到解決方案中如何轉換此char數組嗎?

您需要將數組分成8個符號的組,並將每個組從二進制字符串表示形式轉換為無符號字符。 例如:

unsigned char byte = 0;
for( int i = 0; i < 8; ++i )
    if( a[i] == '1' ) byte |= 1 << (7-i);

然后將該字節放入另一個大小為72/8的數組中,並將其存儲到文件中,例如通過std::ostream::write()方法。 您可以按16、32或64位對位進行分組,並使用uint16_tuint32_tuint64_t作為值,但是這種方式最簡單,您可能應該從它開始並使其首先起作用。

也許像這樣?

const std::size_t n = 72;
std::vector<char> byteArray(n / 8);

for (std::size_t i = 0; i < n / 8; ++i)
    for (std::size_t j = 0; j < 8; ++j)
        if (a[i * 8 + j] == '1')
            byteArray[i] |= 1 << j;

然后使用operator[]()data()訪問byteArray

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM