【发布时间】:2015-05-30 20:56:12
【问题描述】:
我需要知道一个整数是否为 32 位长(我想知道它是否正好是 32 位长(8 个十六进制字符)。我如何在 C++ 中实现这一点?我应该使用十六进制表示还是用 unsigned int 吗?
我的代码如下:
mistream.open("myfile.txt");
if(mistream)
{
for(int i=0; i<longArray; i++)
{
mistream >> hex >> datos[i];
}
}
mistream.close();
其中 mistream 是 ifstream 类型,而 datos 是 unsigned int 数组
谢谢
【问题讨论】:
-
使用
<limits.h>并计算sizeof(int)*CHAR_BIT或测试INT_MAX/INT_MIN -
我不确定您是否想知道
int类型的变量在您的平台中使用了多少位,或者表示特定整数值需要多少位。在整数中可能需要 32 位,但它只需要 1 位来表示值 0。 -
一种不可移植的方法是使用非标准的内在函数。大多数机器都有计算前导零或前导冗余符号位的指令。
-
明确一点:您是否有兴趣知道 type 是 32 位还是 value 介于
power(2,31) and power(2,32)-1或其他之间? -
是的@chux 我有兴趣知道该值是否介于 power(2, 31) 和 power(2, 32) - 1. 你能帮我吗?谢谢
标签: c++ c integer hex ifstream