Ahoj, mám následující kód pro převod z šestnáctkové do desítkové soustavy:
#include <iostream>
#include <sstream>
#include <string>
#include <SDL/SDL.h> // kvůli Uint32
Uint32 hexToDec(std::string hex) {
std::istringstream iss(hex);
Uint32 decimal;
iss >> std::hex >> decimal;
return decimal;
}
void htmlColor(std::string htmlColorString) {
std::string temp = htmlColorString;
if (temp.length() > 7) {
std::cout << "Error" << std::endl;
}
//
if (temp.at(0) != '#') {
std::cout << "Error" << std::endl;
} else {
temp = temp.substr(1, temp.length());
}
std::cout << temp.substr(0, 2) << " " << hexToDec(temp.substr(0, 2)) << std::endl;
std::cout << temp.substr(2, 2) << " " << hexToDec(temp.substr(2, 3)) << std::endl;
std::cout << temp.substr(4, 2) << " " << hexToDec(temp.substr(4, 5)) << std::endl;
}
int main(int argc, char **argv) {
htmlColor("#00FFDD");
}
Po zkompilování a spuštění dostávám následující výsledky:
# ./hexToDec.run
00 0
FF 4093
DD 221
První a poslední hodnota (00 = 0, DD = 221) jsou správné, ale hodnota pro FF by měla být 255. Může mi někdo objasnit, kde je problém?