Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czemu polskie znaki są przekazywane jako 32 bitowe liczby całkowite?
#1
0
Czy ktoś jest wie czemu polskie znaki są przekazywane jako 32 bitowe liczby całkowite i czy ma to związek z X.Org? 

W sensie mam na myśli, że znaków jest mniej niż zakres 32 bitów czyli od 2147483648 do 2147483647  oraz dla unsigned 32 bit: od 0 do 4,294,967,295.

Source: 
Kod:
/*main.c*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Znak: ");
    printf("%c\n", "ą"); /*Char przyjmuje wartości od -128 do 127, tyle co tablica ASCII (128 znaków wraz z zerem, a 127 bez zera.), więc nie ma to prawa działać. */
    printf("String: ");
    printf("%s\n", "ą");
    printf("Dziesiętny: ");
    printf("%d\n", "ą");
    printf("Heksadecymalny: ");
    printf("%x\n", "ą");
}

Output:
Kod:
Znak:

String: ą
Dziesiętny: -2116071413
Heksadecymalny: 81df500b

Zastanawiam się czemu poprawnie wyświetla się "ą" jako string. 

I nie wiem jak działa input w dystrybucjach linuxowych.

Jak ktoś wie, to byłbym wdzięczny za założenie wątku na forum dot. wyjaśnieniu jak działa obsługa wejścia w dystrybucjach linuxowych i czy samo czyste jądro obsługuje wejścia czy potrzebny jest do tego display server.
Odpowiedz
#2
0
Odpowiedz
#3
0
Generalnie zależy to od kodowania, ale zazwyczaj używa się takiego z "wszystkimi" znakami świata, a to ze względu na azjatyckie "krzaki" zajmuje trochę bitów.
Odpowiedz


Skocz do:




Użytkownicy przeglądający ten wątek: 1 gości