【问题标题】:Increment a hexadecimal string in C++在 C++ 中增加一个十六进制字符串
【发布时间】:2022-12-05 06:33:19
【问题描述】:

我想在 C++ 中增加一个十六进制字符串。十六进制字符串从“013802bf0000000000000000”开始,我想将它递增到“013802bf0000000000000001”,...,“013802bf000000000000000f”,...等等,直到我点击“013802bfffffffffffffffff”。

#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <string>
#include <sstream>
using namespace std;
using std::string;
using std::cout;
using std::endl;

void main(double argc, char* argv[])
{
    string input = "013802bf0000000000000000";
    for (int i = 0; i < 10; i++)
    {
      cout<< input << endl;


    }
    _getch();
}

我想将它增加到“013802bf0000000000000001”,...,“013802bf000000000000000f”,...等等,直到我点击“013802bfffffffffffffffff”。

【问题讨论】:

    标签: c++ string c++11 hex


    【解决方案1】:

    如果我算对了,你想打印 16 个十六进制数字的所有变体,所以你可以使用 std::uint64_t

    我已经注释掉了循环到倒数第二个数字的行,而是打印了前 16 个。

    您必须单独打印最后一个。否则你将永远循环,因为所有std::uint64_t 都小于或等于static_cast&lt;std::uint64_t&gt;(-1)

    [Demo]

    #include <cstdint>  // uint64_t
    #include <fmt/core.h>
    #include <string>
    
    int main() {
        //for (std::uint64_t i{0}; i < static_cast<std::uint64_t>(-1); ++i) {
        for (std::uint64_t i{0}; i < 16; ++i) {
            fmt::print("013802bf{:016x}
    ", i);
        }
        fmt::print("...
    ");
        fmt::print("013802bf{:016x}
    ", static_cast<std::uint64_t>(-1));
    }
    
    // Outputs:
    //
    //   013802bf0000000000000000
    //   013802bf0000000000000001
    //   013802bf0000000000000002
    //   013802bf0000000000000003
    //   013802bf0000000000000004
    //   013802bf0000000000000005
    //   013802bf0000000000000006
    //   013802bf0000000000000007
    //   013802bf0000000000000008
    //   013802bf0000000000000009
    //   013802bf000000000000000a
    //   013802bf000000000000000b
    //   013802bf000000000000000c
    //   013802bf000000000000000d
    //   013802bf000000000000000e
    //   013802bf000000000000000f
    //   ...
    //   013802bfffffffffffffffff
    

    【讨论】:

      猜你喜欢
      • 2016-06-12
      • 2011-01-12
      • 2014-01-06
      • 2018-01-31
      • 2022-07-22
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      相关资源
      最近更新 更多