Zna ktoś sposób na taką konwersję jak w temacie? Na internecie niestety nic nie ma
Są co najmniej 3 możliwości i nie pisz, że na necie nic nie ma bo jest pełno rozwiązań dla palącego Cię problemu. Przytoczę słowa innego użytkownika: “…google nie gryzie…”.
- char literka;
cin >> literka;
int x = static_cast(literka);
- char literka;
pobranie literki;
int x = (int)literka;
- int atoi(const char *nptr);
Pytanie czy chodzi Ci o uzyskanie kodu ASCII znaku czy może liczby odpowiadającej znakom cyfr ‘0’ … ‘9’?
Jeśli to pierwsze to wystarczy rzutowanie na typ liczbowy
(unsigned) zmienna_char
Jeśli to drugie wystarczy od zmiennej typu char odjąć ‘0’
zmienna_char - '0'
UINT klawisz;
char klawiszz = 0xc0;
klawisz = (unsigned)klawiszz;
std::cout << klawisz << std::endl;
std::cout << klawiszz << std::endl;
_getch();
Co robie źle? Zmienna klawisz ma wartość 0-9, a ja chce w literkach ;p
Kubus - to na int dajesz
Hmhmh. Wg. Mnie błąd jest w tej linijce:
char klawiszz = 0xc0;
zmienna typu char może przechowywać znak z klawiatury alfanumerycznej ale nie pseudoadres komórki z pamięci.
– Dodane 18.02.2011 (Pt) 15:39 –
#include
#include
using namespace std;
int main()
{
unsigned int klawisz;
char klawisz2 = 'a';
klawisz = (unsigned int)klawisz2;
cout << klawisz << endl;
cout << klawisz2 << endl;
getch();
return 0;
}
masz literkę i liczbę
Kubus_Witkacy , czy ty przynajmniej podstawy C++ znasz aby dawać rady na temat tego języka?
char x1=‘a’;
char x2=33;
char x3=055;
char x4=0x48;
char x5=52.9;
Przejdzie każda z powyższych inicjalizacji.
Mozesz troche jasniej alex ?
A co tu jaśniej, to odpowiedź na poniższą niedorzeczną krytykę twojej odpowiedzi:
Nie rozumiem tylko poco ludzie pchają się nauczać/pouczać/krytykować nie znając nawet podstaw zagadnienia.
xD ale alex źle się zrozumieliśmy. Nie chciałem Cię obrazić, a skoro tak to zrozumiałeś to przepraszam. Ja tylko chciałem się dowiedzieć jak rozwiązać swój problem. Nie kapowałem tego:
char x1='a';
char x2=33;
char x3=055;
char x4=0x48;
char x5=52.9;
Przejdzie każda z powyższych inicjalizacji.
Nie podważam Twojej wiedzy Alexie ponieważ parę razy rozwiązałeś problemy, którym nie dałem rady ale programuję w c++ od ponad roku… A te swoje pytania o podstawy to możesz w dupę wsadzić - bez obrazy ;). Sądzę Alexie, że gdybyś skompilował kod kolegi zadającego pytanie to otrzymałbyś poprawny wynik, więc nie wiem po co w ogóle osoba pytająca, pytanie zadała. Może opatrznie zrozumiałem pytanie.
BTW - chciałem koledze na prostym przykładzie wytłumaczyć jak następuję konwersja. Kolega zainicjalizował zmienną typu char ową liczbą: 0xc0. Wiesz tak z pamięci jaki znak odpowiada tej wartości liczbowej??? Wiadomo, że znakowi ‘a’ odpowiada wartość 97.Kiedy następuję konwersja z char na int otrzymujesz liczbową wartość tego co kryje się pod znakiem char. Sorki Alex za powyższe stwierdzenie i nie pytaj się czy ktoś zna podstawy ;).
Może nie do końca umiem przekazać wiedzę drugiej osobie jednak posiadam pewien zasób wiedzy ;). Poza tym umiem czytać i z tematu tego posta wynika, że pytający chciał przeprowadzić konwersję z char na uint więc moja pierwsza odpowiedź jak jak najbardziej prawidłowa. W następnym poście osoba pytająca chce uzyskać znaki z cyferek więc o co chodzi osobie pytającej ???
Nie lubie jak ktoś przeze mnie sie ktoś z kim tnie… Dobra. Dam kod, który raczej wszysztko wyjaśni.
char klawisz[5];
GetPrivateProfileString("Ogolne","klawisz","Wartość_nie_istnieje",klawiszz,5,cd);
UINT klawisz;
klawisz = (unsigned)klawiszz;
std::cout << klawisz << std::endl;
std::cout << klawiszz << std::endl;
[,,,]
(RegisterHotKey(NULL,NULL, NULL, klawisz/* <- zmienna klawisz to uint ;)*/ ))
UINT klawisz=atoi(klawiszz);
Nie działa
int main()
{
char klawiszz[5];
GetPrivateProfileString("Ogolne","klawisz","Wartość_nie_istnieje",klawiszz,5,cd);
UINT klawisz=atoi(klawiszz);
std::cout << klawisz << std::endl;
std::cout << klawiszz << std::endl;
_getch();
[...]
RegisterHotKey(NULL,NULL, NULL, klawisz/* <- zmienna klawisz to uint ;)*/ ))
}
Żeby nie było: w linijce RegisterHotKey gdy wpisze manualnie 0xc0, wszystko działa poprawnie, a zmienna klawiszz zawiera poprawną wartość(0xc0)
Pytałeś o konwersje, dostałeś odpowiedź, ale teraz to niezbyt rozumiem o co ci chodzi.
Może inaczej: Czy wartość UINT może mieć taką samą wartość(0xc0) jak char(0xc0). Chodzi mi o taką samą postać.
char =0xc0
UINT = char( czyli uint ma mieć 0xc0, w takiej samej postaci)
Chyba już jasne?
unsigned char tak, char nie zupełnie ponieważ 0xC0 to wartość ujemna.
Ok. Problem już rozwiązałem. Dzięki za odpowiedzi.