作者:廊坊0316慢摇酒吧_196 | 来源:互联网 | 2023-05-16 10:59
我需要知道一个整数是否是32位长(我想知道它是否正好是32位长(8个十六进制字符).我怎样才能在C++中实现这个?我应该用十六进制表示还是用无符号表示int one?
我的代码如下:mistream.open("myfile.txt");
mistream.open("myfile.txt");
if(mistream)
{
for(int i=0; i> hex >> datos[i];
}
}
mistream.close();
其中mistream的类型为ifstream,而datos是unsigned int数组
谢谢
1> Useless..:
std::numeric_limits::digits
是一个静态整数常量(或C++ 11中的constexpr)给出位数(因为无符号存储在基数2中,它给出二进制数字).
你需要#include
得到这个,你会在这里注意到它给出了与Thomas的答案相同的值(同时也可以推广到其他原始类型)
作为参考(在我回答之后你改变了你的问题),给unsigned
定程序中给定类型(例如)的每个整数都是完全相同的大小.
你现在要问的不是以位为单位的整数的大小,因为它永远不会变化,但是是否设置了最高位.你可以用这个简单的测试
bool isTopBitSet(uint32_t v) {
return v & 0x80000000u;
}
(将无符号的十六进制文字替换为类似的东西,T{1} <<(std::numeric_limits::digits-1)
如果你想要概括为除了以外的无符号T uint32_t
).