我试图通过以下方式将二进制数组转换为十进制:
uint8_t array[8] = {1,1,1,1,0,1,1,1} ;
int decimal = 0 ;
for(int i = 0 ; i < 8 ; i++)
decimal = (decimal << 1) + array[i] ;
Run Code Online (Sandbox Code Playgroud)
实际上我必须将64位二进制数组转换为十进制数,我必须做几百万次.
任何人都可以帮助我,有没有更快的方法来做到这一点?或者上面的那个好吗?
我使用以下代码将文件读入chararcter数组.现在,对于小文件(比如2 MB),它正在正常执行,但对于大文件(140 MB),在我的18 GB UBUNTU服务器中它正在给予segmentation fault.任何人都可以帮我解决这个问题吗?我认为18 GB就足以将240 MB的文件保存到内存中.我使用64位UBUNTU并使用g ++进行编译.
ifstream is;
char chararray [fileSize] ;
is.read(chararray, fileSize) ;
Run Code Online (Sandbox Code Playgroud) 我想使用 C++ 获取我的计算机(Windows)的 CPU Id。
我使用此代码来获取它。
它输出如下信息:
For InfoType 0
CPUInfo[0] = 0x5
CPUInfo[1] = 0x756e6547
CPUInfo[2] = 0x6c65746e
CPUInfo[3] = 0x49656e69
For InfoType 1
CPUInfo[0] = 0xf31
CPUInfo[1] = 0x20800
CPUInfo[2] = 0x41d
CPUInfo[3] = 0xbfebfbff
For InfoType 2
CPUInfo[0] = 0x605b5001
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x7c7040
For InfoType 3
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = 0x0
CPUInfo[3] = 0x0
For InfoType 4
CPUInfo[0] = 0x0
CPUInfo[1] = 0x0
CPUInfo[2] = …Run Code Online (Sandbox Code Playgroud) 我有一个20个数字(64位int)的数组,如10,25,36,43 ......,118,121(排序数字).
现在,我必须提供数百万的数字作为输入(比如说17,30).
我必须提供的是:
for Input 17:
17 is < 25 and > 10. So, output will be index 0.
for Input 30:
30 is < 36 and > 25. So, output will be index 1.
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用线性搜索,二进制搜索来完成它.有没有什么方法可以更快地完成它?输入数字是随机的(高斯).
我有一个代码:
class A{
public:
void method1 (){
// do something
}
};
class B{
public:
void method2 (){
// do something
}
};
main(int argc, char* argv[])
{
A a ;
a.method1();
// free object a
B b ;
b.method2();
}
Run Code Online (Sandbox Code Playgroud)
现在,在创建b对象之前,我希望释放一个由a占用的内存.任何人都可以帮我怎么做?