在 C++ 中将 uint8_t 数组转换为位集
convert uint8_t array to bitset in C++
有没有一种快速的方法可以将 uint8_t 的数组转换为 biteset。
uint8_t test[16];
// Call a function which populates test[16] with 128 bits
function_call(& test);
for(int i=0; i<16; i++)
cout<<test[0]; // outputs a byte
cout<<endl;
std:: bitset<128> bsTest;
我试过了,但没用
bsTest(test);
我建议你一个可能的解决方案。
不太好,不太快,有点脏,但我希望它能有所帮助。
#include <bitset>
#include <iostream>
int main ()
{
uint8_t test[16] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p' };
std::bitset<128> bsTest { } ;
for ( unsigned ui = 0 ; ui < 16 ; ++ui )
{
bsTest <<= 8;
std::bitset<128> bsTmp { (unsigned long) test[ui] };
bsTest |= bsTmp;
}
std::cout << bsTest;
return 0;
}
想法是将位集初始化为零
std::bitset<128> bsTest { } ;
并在另一个 bitset
的末尾一次添加一个 uint8_t
std::bitset<128> bsTmp { (unsigned long) test[ui] };
然后合并(位或)两个位集
bsTest |= bsTmp;
并将结果移动 8 位
bsTest <<= 8;
p.s.: 对不起我的英语不好
有没有一种快速的方法可以将 uint8_t 的数组转换为 biteset。
uint8_t test[16];
// Call a function which populates test[16] with 128 bits
function_call(& test);
for(int i=0; i<16; i++)
cout<<test[0]; // outputs a byte
cout<<endl;
std:: bitset<128> bsTest;
我试过了,但没用
bsTest(test);
我建议你一个可能的解决方案。
不太好,不太快,有点脏,但我希望它能有所帮助。
#include <bitset>
#include <iostream>
int main ()
{
uint8_t test[16] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h',
'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p' };
std::bitset<128> bsTest { } ;
for ( unsigned ui = 0 ; ui < 16 ; ++ui )
{
bsTest <<= 8;
std::bitset<128> bsTmp { (unsigned long) test[ui] };
bsTest |= bsTmp;
}
std::cout << bsTest;
return 0;
}
想法是将位集初始化为零
std::bitset<128> bsTest { } ;
并在另一个 bitset
的末尾一次添加一个uint8_t
std::bitset<128> bsTmp { (unsigned long) test[ui] };
然后合并(位或)两个位集
bsTest |= bsTmp;
并将结果移动 8 位
bsTest <<= 8;
p.s.: 对不起我的英语不好