logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak uzyskać kod ASCII litery w C++?

desmo999 26 Sie 2008 19:00 4589 12
REKLAMA
  • #1 5477247
    desmo999
    Poziom 12  
    Posty: 77
    Ocena: 3
    Witam.

    mam pytanie dotyczące wyłuskiwana kodu dwójkowego z litery. Tzn mam np.literę A i chciałbym by wyświetlał mi się kod ASCII tej litery. Czy jest w C++ jakaś pojedyncza funkcja która mi coś takiego wykona??

    Z góry dziękuję.
    Pozdrawiam
    :D
  • REKLAMA
  • #2 5477343
    maciek_slon
    Poziom 29  
    Posty: 942
    Pomógł: 143
    Ocena: 27
    Poszukaj na forum, było wiele razy o wyświetlaniu binarnej reprezentacji liczb... Bo litera to nic innego jak liczba (char, najczęściej 8 bitów) przechowująca (najczęściej) kod ASCII znaku.
  • REKLAMA
  • #3 5477489
    JmL(TM)
    Poziom 24  
    Posty: 804
    Pomógł: 44
    Ocena: 12
    Natomiast by wyswietlic hexdecymalna wartosc znaku wystarczy:

    char szBuffer[32];
    
    wsprintf(szBuffer, "0x%X", 'A');
    MessageBox(hwnd, szBuffer, "", MB_ICONINFORMATION);
  • #4 5478813
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Można tak:
    
      int k;
      k=int('A');
      cout<<k<<endl;
    
    lub natychmiast:
      cout<<int('A')<<endl;
    

    Poprawiam:
    Chodziło o kod binarny, podany kod zamienia literę na decy. Możasz przekonwertować dowolną liczbę na kod binarny. Kod konwersji na hexa podałem na Forum. Zamiana go na binarny jest b. prosta.
  • #5 5480489
    JmL(TM)
    Poziom 24  
    Posty: 804
    Pomógł: 44
    Ocena: 12
    No to w takim razie na dziesietna mozna rowniez tak:

    char szBuffer[32];
    
    wsprintf(szBuffer, "%d", 'A');
    MessageBox(hwnd, szBuffer, "", MB_ICONINFORMATION);


    :D
  • REKLAMA
  • #6 5485205
    desmo999
    Poziom 12  
    Posty: 77
    Ocena: 3
    wielkie dzieki:)
    pozdrawiam
  • #7 5491871
    desmo999
    Poziom 12  
    Posty: 77
    Ocena: 3
    Witam ponownie.

    a w jaki sposób wyświetlać kod BCD całego wyrazu. Czyli np. piszę sobie "Ala" i chciałbym wyłuskać kod z każdej literki i potem bym sobie to w bardzo prosty sposób mógł wysłać na wyświetlacz LCD. Przypuszczam że trzeba użyć tablicy i może wskaźników ale niezbyt wiem jak składna ma wyglądać do końca.

    Pozdrawiam
  • REKLAMA
  • #9 5493674
    bbxb
    Poziom 31  
    Posty: 2271
    Pomógł: 147
    Ocena: 94
    Z góry przepraszam, że tak się wcinam w temat ale mam bardzo podobny problem i nie chciałem zakładać identycznego tematu. Otóż napisałem coś takiego jak poniżej i chciałbym kod ASCII wyświetlić także w postaci liczby binarnej. Czy jest w C++ jakaś funkcja tego typu czy trzeba pisać całą procedurę??

    #include <iostream>
    using namespace std;
    
    int main()
    {
        cout << "Wpisz jakis znak: ";
        char Znak;
        cin >> Znak;
        
        int KodZnaku = static_cast<int>(Znak);
        
        cout << "Wpisales '" << Znak << "' a jego kod ASCII to " <<
        KodZnaku << "." << endl;
    
        cout << "Kod ASCII " << KodZnaku << " w systemie heksadecymalnym to: ";
        cout << hex;
        cout << KodZnaku << endl;
        cout << "a w systemie osemkowym to: ";
        cout << oct;
        cout << KodZnaku << endl;
      
        getchar();
        getchar();
    }



    Pozdrawiam.

    Dodano po 1 [godziny] 13 [minuty]:

    Kolego desmo999 może ten kod Ci coś podpowie. Wcale nie potrzeba tablicy i wskaźników :-) Tak mi się wydaje ale jestem jeszcze początkującym...

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        cout << "Wpisz jakis tekst: ";
        string Napis;
        cin >> Napis;
        
        int DlugoscNapisu = Napis.length();
        cout << "Wpisales napis '" << Napis << "', ktory ma " << DlugoscNapisu <<
        " znakow." << endl;
        
        char PojedynczyZnak = Napis[0];
        
        for (int indeks = 0; indeks < DlugoscNapisu; ++indeks)
        {
            PojedynczyZnak = Napis[indeks];
            cout << "Kod heksadecymalny znaku '" << PojedynczyZnak <<
            "' to " << hex << static_cast<int>(PojedynczyZnak) << endl;
        }
    
        getchar();
        getchar();
    }
  • #10 5493985
    bobbyAIR
    Poziom 20  
    Posty: 267
    Pomógł: 41
    Ocena: 6
    Niestety trzeba pisac np tak
    
    #include <iostream>
    using namespace std;
    
    class binary{
      unsigned short data;
    	string cast(){
    		string r;
    		char lead=0;
    		for(int mask=1<<15; mask != 0; mask >>= 1) { 
    			if((data & mask)){
    			 lead=1;
    			 r+="1";
    			}
    			else if (lead){
    			 r+="0";
    			}
    			if(mask&((1<<4)|(1<<8)|(1<<12))&&lead) r+=" ";
    		}
    		return r;
    	}
    	public:
    		binary():data(0){}
    		template <class T> binary(const T& d):data(d){}
    		friend ostream & operator <<(ostream &, binary);
    };
    
    ostream & operator <<(ostream &s, binary b){
    	return s<<b.cast();
    }
    
    
    
    int main(){
    	int i(1024);
    	binary b1=i;
    	cout << b1 << endl;
    	
    	binary b2(1234);
    	cout << b2 << endl;
      return 0;
    }
    
  • #11 5495223
    JmL(TM)
    Poziom 24  
    Posty: 804
    Pomógł: 44
    Ocena: 12
    Jeszcze raz o BCD :D

    typedef unsigned char  u08;
    
    #define dec2bcd(dec)     ((((dec) / 10) << 4) | ((dec) % 10))
    #define dlugosc_tekstu     5
    
    char tekst[]="test!";
    u08 tab_bcd[dlugosc_tekstu];
    
    for (u08 d=0; d<dlugosc_tekstu; d++)
    {
         tab_bcd[d] = dec2bcd(tekst[d]);
    }
  • #13 5495512
    JmL(TM)
    Poziom 24  
    Posty: 804
    Pomógł: 44
    Ocena: 12
    bobbyAIR napisał:
    JmL przy twojej definicji życzę powodzenia przy szukaniu błedu w wywołaniu...


    Dlatego tak nie wywoluje... 8) ale slusznie zwrociles uwage!

    Pozdrawiam!

Podsumowanie tematu

✨ Dyskusja dotyczy sposobów uzyskania i wyświetlania kodu ASCII pojedynczej litery w języku C++. Podstawową metodą jest rzutowanie znaku typu char na int, co pozwala uzyskać wartość dziesiętną kodu ASCII, np. `int k = int('A');`. Do wyświetlania kodu w formacie szesnastkowym można użyć funkcji `wsprintf` lub manipulacji strumieniem `cout` z modyfikatorem `hex`. W przypadku kodu binarnego nie istnieje wbudowana funkcja, więc konieczne jest napisanie własnej procedury konwersji, np. poprzez maskowanie bitów i iterację. Wątek porusza także konwersję kodu ASCII na format BCD, gdzie zaproponowano makro `#define dec2bcd(dec) (((dec) / 10)
Wygenerowane przez model językowy.
REKLAMA