(uint32_t header; char array [32];) 如何在c ++中将数据从头复制到数组?如何进行这种转换?我尝试过类型广播,但它似乎没有效果。
答案 0 :(得分:1)
使用std::bitset获取二进制表示并将其转换为char数组:
#include <iostream>
#include <cstdint>
#include <bitset>
int main()
{
std::uint32_t x = 42;
std::bitset<32> b(x);
char c[32];
for (int i = 0; i < 32; i++)
{
c[i] = b[i] + '0';
std::cout << c[i];
}
}
这将类似于小端表示。
答案 1 :(得分:0)
我知道这个问题有点老了,但我会写一个可能对其他人有帮助的答案。因此,基本上可以使用function makeSelection(e) {
let item = document.querySelectorAll('a');
console.log(item);
var test = [];
for (var i = 0; i < item.length; i++) {
test.push(item[i].children[0].textContent)
}
console.log(test)
}
来表示固定大小的N位序列。
使用<a href="#" onclick="makeSelection(this)">
<p>This is p1</p>
</a>
<a href="#" onclick="makeSelection(this)">
<p>This is p2</p>
</a>
<a href="#" onclick="makeSelection(this)">
<p>This is p3</p>
</a>
可以创建代表4字节整数的32位序列。您还可以使用std::bitset
函数将这些位转换为std::bitset<32> bits(value)
。
但是,如果要获得一些更复杂的输出,可以使用以下功能:
std::bitset::to_string
这将创建如下输出:
std::string
这里是使用方式:
void u32_to_binary(uint32_t const& value, char buffer[]) {
std::bitset<32> bits(value);
auto stringified_bits = bits.to_string();
size_t position = 0;
size_t width = 0;
for (auto const& bit : stringified_bits) {
width++;
buffer[position++] = bit;
if (0 == width % 4) {
buffer[position++] = ' ';
width = 0;
}
}
buffer[position] = '\0';
}