12个字节有符号或无符号整数

时间:2013-11-27 21:20:22

标签: c++

如何在c ++中分配12字节有符号或无符号整数。我试图构建一个包含3个无符号整数的结构,但我不知道如何使输入数正确地驻留在这3个上。因此,当我重载输入操作符时,我可以分配超过96位的位,我有3个整数。 这是我想要的结构

struct type  
{ 
   unsigned int i;
   unsigned int j; 
   unsigned int k;
};

我尝试将其作为字符串读取,然后将其转换为数字,然后再转换为0和1的字符串,但我确实将这些插入到正确的位中有问题。

任何建议!

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;
}

有许多替代设计都有其自身的优点和复杂性,这只是其中一种可能性。