我完全新的C/C++,我试图找出如何,这将是一个HTML样式的RGB十六进制的形式,如"#FFFFFF",并把它转换成3点的整数瓦尔一个字符串参数转换
我真的不确定在哪里.
可能重复:
C++将十六进制字符串转换为有符号整数
我正在尝试将十六进制字符串转换为C++中的unsigned int.我的代码看起来像这样:
string hex("FFFF0000");
UINT decimalValue;
sscanf(hex.c_str(), "%x", &decimalValue);
printf("\nstring=%s, decimalValue=%d",hex.c_str(),decimalValue);
Run Code Online (Sandbox Code Playgroud)
结果是-65536.我通常不会做太多的C++编程,所以任何帮助都会受到赞赏.
谢谢,杰夫
可能重复:
C++将十六进制字符串转换为有符号整数
我已经在谷歌搜索但没有找到任何帮助.所以继承我的问题:我的字符串已经包含十六进制代码,例如:string s1 ="5f0066",我想将此字符串转换为十六进制.我需要将字符串与我在二进制文件中读取的十六进制代码进行比较.
(只需要基本的想法如何转换字符串)5f最好的问候和谢谢.
编辑:获取unsigned char格式的二进制文件信息.所以它的0x5f ...好像有相同格式的字符串
我有两个十六进制值,存储为字符串:
string md5OfPath("a77e0a3e517e0a9d44c3a823d96ca83c");
string guidValue("c3b491e559ac4f6a81e527e971b903ed");
Run Code Online (Sandbox Code Playgroud)
我想对C++中的两个值执行XOR运算.你能告诉我如何执行xor操作吗?
我在本主题中看到C++ 将十六进制字符串转换为有符号整数,boost::lexical_cast可以将字符串内的十六进制转换为另一种类型(int、long...)
但是当我尝试这段代码时:
std::string s = "0x3e8";
try {
auto i = boost::lexical_cast<int>(s);
std::cout << i << std::endl; // 1000
}
catch (boost::bad_lexical_cast& e) {
// bad input - handle exception
std::cout << "bad" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
它以错误的词法转换异常结束!
boost 不支持这种从 string hex 到 int 的转换?
我想将字符串转换为有符号整数。以下是要求。我已将十六进制值作为字符串存储在缓冲区中。现在我想将该值转换为有符号整数。
buf = "fb869e"将其转换为有符号整型。所以 o/p 应该是 -293218。但是当我尝试使用 strtol 进行转换时,我得到 16483998。那么我应该做什么?
我在网上搜索过,但似乎并不能解决我的问题。基本上我有一个std::string包含十六进制内存地址(例如0x10FD7F04)。显然,这个数字是从文本文件中读取并保存为std::string.
我需要将此字符串转换为 int 值,但保留十六进制表示法0x。有什么办法可以做到这一点吗?
我找到了将十六进制字符串转换为signed intusing 的代码strtol,但找不到短整数(2个字节)的内容。这是我的代码:
while (!sCurrentFile.eof() )
{
getline (sCurrentFile,currentString);
sOutputFile<<strtol(currentString.c_str(),NULL,16)<<endl;
}
Run Code Online (Sandbox Code Playgroud)
我的想法是读取一个具有2个字节宽的值的文件(如0xFFEE),将其转换为带符号的int并将结果写入输出文件中。执行速度不是问题。
我可以找到一些避免该问题的方法,但是我想使用“单行”解决方案,所以也许您可以为此提供帮助:)
编辑:文件看起来像这样:
while (!sCurrentFile.eof() )
{
getline (sCurrentFile,currentString);
sOutputFile<<strtol(currentString.c_str(),NULL,16)<<endl;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我已经尝试了十六进制运算符,但这样做之前我仍然必须将字符串转换为整数。
// This won't work as currentString is not an integer
myInt << std::hex << currentString.c_str();
Run Code Online (Sandbox Code Playgroud) 我有一个字符串向量.需要帮助搞清楚如何将其转换为整数向量,以便能够以算术方式使用它.谢谢!
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(int argc, char* argv[]) {
vector<string> vectorOfStrings;
vectorOfStrings.push_back("1");
vectorOfStrings.push_back("2");
vectorOfStrings.push_back("3");
for (int i=0; i<vectorOfStrings.size(); i++)
{
cout<<vectorOfStrings.at(i)<<endl;
}
vector<int> vectorOfIntegers;
//HELP NEEDED HERE
//CONVERSION CODE from vector<string> to vector<int>
int sum;
for (int i=0; i<vectorOfIntegers.size(); i++)
{
sum += vectorOfIntegers.at(i);
}
cout<<sum<<endl;
cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我想在 C++ 中将十六进制字符串转换为十进制数(整数)并尝试使用以下方法:
std::wstringstream SS;
SS << std::dec << stol(L"0xBAD") << endl;
Run Code Online (Sandbox Code Playgroud)
但它0反而返回了2989。
std::wstringstream SS;
SS << std::dec << reinterpret_cast<LONG>(L"0xBAD") << endl;
Run Code Online (Sandbox Code Playgroud)
但它-425771592反而返回了2989。
但是,当我像下面这样使用它时,它可以正常工作2989并按预期提供。
std::wstringstream SS;
SS << std::dec << 0xBAD << endl;
Run Code Online (Sandbox Code Playgroud)
但我想输入一个字符串并2989作为输出,而不是像0xBAD. 例如,我想输入"0xBAD"并将其转换为整数,然后转换为十进制数。
提前致谢。
我收到了这个字符串
0x3384BCFD
0x61CEB13B
Run Code Online (Sandbox Code Playgroud)
两者都是字符串类型..
最初我得到了这个
uint32_t iv[2] = {0xFFFFFFFF,0xFFFFFFAA};
Run Code Online (Sandbox Code Playgroud)
如何分配2串以上为iv[0]和iv[1]?
我想要的最终结果iv[2]为iv[2] = {0x3384BCFD,0x61CEB13B};
谢谢你的帮助!!
我正在编写一个程序,它接受两个十六进制数字并将它们转换为十进制形式,并以十进制形式打印出它们的总和.数字的最大长度为10. {submit.cs.ucsb.edu/submission/203504}.我对错误消息感到困惑.问题是数字的最大长度是10.为什么像"ffffffffff"这样的输出有效
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
int hexToDecimal(string);
string decimalToHex(int);
int main()
{
long long hex1, hex2;
std::cout << "Enter first number:" << std::endl;
std::cin >> std::hex >> hex1;
std::cout << "Enter a second number:" << std::endl;
std::cin >> std::hex >> hex2;
if (hex1 >9999999999 || hex2 > 9999999999)
{
cout << "Addition Overflow" << endl;
}
else
{
std::cout << "The sum is "<< std::hex << hex1 + hex2 << "." << std::endl;
} …Run Code Online (Sandbox Code Playgroud)