如何在c ++中分配12字节有符号或无符号整数。我试图构建一个包含3个无符号整数的结构,但我不知道如何使输入数正确地驻留在这3个上。因此,当我重载输入操作符时,我可以分配超过96位的位,我有3个整数。 这是我想要的结构
struct type
{
unsigned int i;
unsigned int j;
unsigned int k;
};
我尝试将其作为字符串读取,然后将其转换为数字,然后再转换为0和1的字符串,但我确实将这些插入到正确的位中有问题。
任何建议!
答案 0 :(得分:2)
转换的一个方向可以像这样实现:
#include <stdint.h>
#include <string>
struct type { uint32_t i, j, k; };
type binary_string_to_u96(const std::string &s) {
type result = { 0, 0, 0 };
const unsigned d = s.size() - 1;
for (unsigned i = 0; i < s.size(); ++i) {
const uint32_t bit = s[d - i] == '1';
if (i < 32) {
result.k |= bit << i;
} else if (i < 64) {
result.j |= bit << (i - 32);
} else {
result.i |= bit << (i - 64);
}
}
return result;
}
有许多替代设计都有其自身的优点和复杂性,这只是其中一种可能性。