如何将二进制64位字符串转换为C 中的UINT64_T

How to convert a binary 64 digit string to a uint64_t in c++?

本文关键字:中的 UINT64 转换 二进制 64位 字符串      更新时间:2023-10-16

我正在尝试从国际象棋板数组初始化比特板。运行一个用于循环的循环并检查一件是否匹配,然后用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);