1字节无符号整数c ++

raz*_*aze 11 c++

我编写了一个名为HugeInteger的类,它可以使用"无限"大小的数字进行算术运算(加,子,乘).它将数字中的每位数字视为独立数字(例如1234 = 1,2,3和4).我将这些数字存储在一个向量中(vector<short>).现在,因为每个数字只能取0到9之间的值,所以我真的不需要将它们存储为2字节数字.有没有办法(不使用char)将数字存储为1字节无符号整数?谢谢!

更新:

vector<unsigned char> v;
v.push_back(1);
v.push_back(2);

for (size_t i = 0; i < v.size(); i++)
    cout << v[i];
Run Code Online (Sandbox Code Playgroud)

这会产生不需要的输出.我应该使用哪种数据类型来迭代向量?

Oli*_*rth 25

是的,使用unsigned char.

如果<stdint.h>可用,那么您也可以使用uint8_t.

  • @Ben:`unsigned char`始终是一个“字节”,但是按照C / C ++的说法,该“字节”可能超过8位(尽管通常仅在按当今标准被认为不常见的体系结构上使用)。 (2认同)

che*_*ner 10

不要让标准编译器类型char混淆你; 以下是完全合法的:

char number[5] = { 1, 4, 3, 6, 2};   // Representation of decimal 14,362
Run Code Online (Sandbox Code Playgroud)

并不是说这种char类型有什么特别的东西会迫使你把它们想象成角色; 相反,它只是1个字节的方便大小,这使得它们适合保存库例程的值,例如printf使用它们来保存它将在合适的编码下解释为字符的1字节值.