http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html, rozmiar czcionki to 16 bitów, to znaczy 2 bajty. jakoś przypomniałem jego 8-bitowy, tj. 1 bajt. Aby usunąć wątpliwości, utworzyłem plik tekstowy z pojedynczym znakiem "a" i zapisałem go. Następnie sprawdziłem rozmiar pliku, jego 1 bajt, czyli 8 bitów. Jestem zdezorientowany co do wielkości postaci ? Jeśli jego 2 bajty, dlaczego rozmiar pliku wynosi 1 bajt, a jeśli jest to 1 bajt, dlaczego link mówi 2 bajty?Rozmiar woluminu 8 bitów lub 16 bitów?
Odpowiedz
A char
w języku Java to jednostka kodu UTF-16. Nie musi to być kompletna postać w Unicode, ale w rzeczywistości jest to 16-bitowa liczba całkowita bez znaku.
Podczas wpisywania tekstu do pliku (lub w inny sposób przekształcenia go w sekwencję bajtów), dane będą zależały od tego, który kod jest używany. Na przykład, jeśli używasz ASCII lub ISO-8859-1, jesteś bardzo ograniczony co do tego, które postacie możesz pisać, ale każda postać będzie tylko bajtem. Jeśli używasz UTF-16, to każda Java char
zostanie przekonwertowana na dokładnie dwa bajty - ale niektóre znaki Unicode mogą zająć cztery bajty (te reprezentowane przez dwie wartości Java char
).
Jeśli używasz UTF-8, to długość nawet pojedynczej Java char
w zakodowanej formie będzie zależeć od wartości.
Należy pamiętać, że pliki tekstowe naprawdę mają powiązany z nimi format/zestaw znaków. Pliki tekstowe są zwykle zapisywane w formacie UTF-8, który wynosi 8 bitów na znak, chyba że znak jest "specjalny".
Jaka jest twoja definicja "specjalnego"? * Wszystko * poza ASCII? –
Starałem się, aby moja odpowiedź była zwięzła :-) dla pełnej definicji patrz [Wikipedia] (http://en.wikipedia.org/wiki/UTF-8) – vogomatix
Kiedy "zwięzłe" oznacza użycie tak okropnie niejasnego terminu jak "wyjątkowy charakter", nie sądzę, że to bardzo przydatne. –
Znak w Javie ma 2 bajty (co sugeruje prawidłowy zakres wartości). Ale niekoniecznie oznacza to, że każda reprezentacja postaci ma długość 2 bajtów. Na przykład, wiele kodowań zarezerwuje tylko 1 bajt dla każdego znaku (lub użyje 1 bajtu dla najczęstszych znaków) .Jeśli domyślne kodowanie platformy to kodowanie 1-bajtowe, takie jak ISO-8859-1 lub kodowanie o zmiennej długości, takie jak jako UTF-8 może z łatwością przekonwertować 1 bajt na pojedynczy znak.
- 1. Jak przekonwertować 8 bitów na 16 bitów w VHDL?
- 2. Wyczyść dolne 16 bitów
- 3. algorytm za generowaniem tabeli wyszukiwania bitów wstecznych (8 bitów)
- 4. $ rozmiar, $ bitów, verilog
- 5. Konwertuj 12 bitów int na 16 lub 32 bity
- 6. Przesunięcie bitów w lewo i odrzucenie bitów
- 7. ACRA wyjątek Może używać tylko 16-bitowych bitów dla requestCode
- 8. 7-bitów do 0xEF
- 9. bitów maskowania Pythona
- 10. Metaprogram do zliczania bitów
- 11. Ile bitów ma postać?
- 12. Przesuwanie zestawu bitów Java
- 13. C++ pola bitów i -Wconversion
- 14. Bitowe obliczanie i detekcja bitów
- 15. Porównanie bitowe bitów w Javie
- 16. manipulacja bitami: usuwanie zakresu bitów
- 17. Liczba bitów reprezentujących liczby ujemne
- 18. Przykładowy zestaw bitów Java Przykład
- 19. Projektowanie strumienia bitów w C#
- 20. Ustawienie bitów w Ansi C
- 21. dlaczego zmienne 128-bitowe powinny być wyrównane do granicy 16 bitów
- 22. jaki jest cel bitów x86 cr0 WP?
- 23. Efektywne tasowanie bitów wektora liczb binarnych
- 24. Precyzyjna kontrola bitów tekstur w GLSL
- 25. Windows 7 64 bity niepoprawna ścieżka podczas ładowania biblioteki 32 bitów dla 32 bitów exe
- 26. Konwersja równań na operacje zmiany bitów
- 27. Jak powinienem reprezentować pole flag bitów w admin django?
- 28. Znaczenie licznika stron i rozmiaru ostatniej strony w nagłówku MZ (DOS, 16 bitów) .EXE
- 29. Jak skonwertować podzestaw zakresu bitów w zestawie bitów C++ na liczbę?
- 30. w zestawie bitów, czy mogę użyć "to_ulong" dla określonego zakresu bitów?
1 znak to 8 bitów, czyli bajt –
@AliGajani: To po prostu nieprawda. –
@AliGajani: Ponownie spójrz na etykietę języka, a następnie rozważ, w jaki sposób znaki są kodowane w Javie. Mimo to 8-bitów niekoniecznie jest bajtem. –