如何将二进制64位字符串转换为C 中的UINT64_T
How to convert a binary 64 digit string to a uint64_t in c++?
我正在尝试从国际象棋板数组初始化比特板。运行一个用于循环的循环并检查一件是否匹配,然后用64位数字字符串转换为二进制匹配件位置的二进制字符串。
for (int i=0;i<64;i++) {
Binary="0000000000000000000000000000000000000000000000000000000000000000";
Binary[i] = '1';
if(chessBoard[i/8][i%8] == "P"){
WP+=convertStringToBitboard(Binary);
}
对于我尝试过的转换stringtobitboard功能:
uint64_t convertStringToBitboard(std::string Binary){
char * ptr;
long long temp = std::stoull(Binary, &ptr, 2);
std::cout << temp << std::endl;
return temp;
}
以及
uint64_t convertStringToBitboard(std::string Binary){
std::bitset<64> x(std::string(Binary));
return x;
}
任何帮助都将不胜感激!
首先而不是使用字符串,您可以使用简单的shift
long long unsigned bin = 1LL << i;
除此之外,没有任何标准功能可以转换二进制文件。您可以通过循环浏览字符串元素并移动来发明一个。如下:
long long unsigned bin = 0;
for (int i = 0; i < 64; i++) {
long long unsigned bit = binaryString[i] - '0';
bin |= (bit << i);
}
使用 strtoull
,如下:
std::string s = "747";
int64_t n = std::strtoull(s.c_str(), NULL, 0);
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++中的"inline"关键字
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 用C++中的一个变量定义一个常量
- vector.resize()中的分配错误
- 在 VS 移位中,UINT64 上的左移(64 >移位> 32)位仅 32 位
- 访问联合的成员变量:为 uint64 声明,但想要在 uint32 中的内容。C++
- 警告 639:二进制操作中类型 'uint64' 的强类型不匹配
- 本机 WMI 提供程序中的 UINT64 不返回某些系统上的数据
- 用于在稀疏机器学习中生成uint64或uint32特征id的良好哈希函数