【问题标题】:How to encode a Hex string to Integer in BCB XE如何在 BCB XE 中将十六进制字符串编码为整数
【发布时间】:2013-05-29 11:01:27
【问题描述】:

我想在 RAD Studio C++ Builder XE 中将十六进制字符串转换为 16 位十进制。

例如,我有十六进制字符串“8FC”。二进制表示为 100011111100。十进制表示为:2300。

如何在 C++ Builder XE 中进行这种转换?

【问题讨论】:

  • 查看istringstreamhexhex 上的示例完全符合您的要求。
  • 是否可以在C++ Builder XE中使用? C++ Builder XE 中的 std::hex 要求 ios_base & _Iosbase 作为参数。请注意我使用C++ Builder XE。非常感谢。
  • 创建一个sscce,即应该工作但不能工作的最小可能示例,我们都可以在家里尝试。或者试试我链接的example,看看你能不能让它工作。

标签: c++ hex c++builder c++builder-xe


【解决方案1】:

最后,我找到了在this article 上进行此转换的正确方法。它只是尝试调用StrToInt() 过程,但在前面加上一个“$”,如下所示:

s1 = "8FC";
int i = StrToInt(UnicodeString("$") + s1);
Edit1->Text = IntToStr(i);

【讨论】:

    【解决方案2】:

    一种简单的方法是使用std:stringstream

    #include <ios>
    #include <sstream>
    #include <ostream>
    #include <iostream> // MS & Borland seem to be deficient in requiring this
    
    int main()
    {
        unsigned short val;
    
        std::stringstream st("8FC");
        st >> std::hex >> val;
    
        // convert it back to text as decimal
        st.clear();
        st << std::dec << val;
        std::cout << "Decimal value " << st.str() << std::endl;
    }
    

    【讨论】:

    • 是否可以在C++ Builder XE中使用? C++ Builder XE 中的std::hex 是询问ios_base &amp; _Iosbase 参数。请注意,我使用的是 C++ Builder XE。非常感谢。
    • std::hex 是 C++ 标准库的一部分。我已经更新了我的答案,包括额外的必需标题和转换回文本为十进制
    • 我已经尝试过您的建议,但它仍然会引发任何错误消息。这是消息:[BCC32 Error] uPort.cpp(133): E2285 Could not find a match for 'std::stringstream::basic_stringstream(UnicodeString)', [BCC32 Error] uPort.cpp(133): E2031 Cannot cast from 'UnicodeString' to 'std::stringstream'
    • 您的编译器设置必须配置为将多字节字符串解释为 unicode。请改用std::wstringstream 或更改您的设置。
    • 使用std::wstringstream,直到你有机会谷歌它。
    猜你喜欢
    • 2015-04-30
    • 2020-11-22
    • 2015-11-29
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 2014-03-10
    • 2014-03-19
    相关资源
    最近更新 更多