2014-12-28 19 views
19

Jeśli muszę sprawdzić ciąg znaków ma unikatowe znaki, rozumiem, jeśli rozważamy znaki w tabeli Ascii, to będzie ich 128.co oznacza 256 dla 128 unikalnych znaków w ascii table

Dlaczego jednak musimy utworzyć tablicę typu boolowskiego o rozmiarze 256, aby pomieścić 128 znaków, aby sprawdzić, czy element istnieje co najmniej raz w ciągu znaków? Czy tablica boolowska o rozmiarze 128 nie powinna wystarczyć?

Oto cytat z książki „Cracking kodowania Wywiad”:

if (str.length() > 128) return false; 
boolean[] char_set = new boolean[256]; //which is strange since it clearly says over 128 its false 

.....

+3

Kto mówi, że "musisz utworzyć tablicę typu boolean o rozmiarze 256" _? – wilx

+1

Co powiedział @ VáclavZeman. Zauważam jednak, że starsze, 8-bitowe zestawy znaków są często określane niepoprawnie jako "ASCII", więc być może ktoś na to powiedział (nauczyciel?) Był pod wpływem tego. –

+1

To było rozwiązanie do pęknięcia wywiadu kodującego: if (str.length()> 28) zwraca false; boolean [] char_set = new boolean [256]; to jest sugerowane rozwiązanie. – Lydia

Odpowiedz

3

Wiele osób w dzisiejszych czasach stosowanie terminu „ASCII” w niechlujny sposób opisać ISO-8859-1 (also known as Latin-1), zestaw znaków, który zawiera wartości znaków drukowalnych [32 .. 127] w starym zestawie znaków ASCII, a także wartości z zakresu [160..255]. Latin-1 radzi sobie dość dobrze z obsługą języków zachodnioeuropejskich, podczas gdy ASCII ogranicza się do znaków nieakcentowanych używanych w podstawowym języku angielskim.

Może to wyjaśniać sugestię, że ktoś użył 256-pozycyjnej tablicy do tabelowania tekstu w tego rodzaju zestawie znaków.

+6

Zakres ASCII to 0..127; zawiera znaki kontrolne. –

13

Nie, jest 256 znaków ASCII. Obejmuje to standardowe znaki ASCII (0-127) i rozszerzone znaki ASCII (128-255).

Więcej informacji. Proszę odnieść się do: http://www.flexcomm.com/library/ASCII256.htm

+2

"Rozszerzony ASCII" nie jest ASCII; To także nie jeden zestaw znaków. Zazwyczaj tak zdefiniowane zestawy znaków mają jedno bajtowe kodowanie. Jednak nie wszystkie mają 256 znaków (np. Windows-1252). W programowaniu Windows takie zestawy znaków nazywają się ANSI. Bez względu na to, jak je nazwiesz, często ważne jest, aby wiedzieć, który z nich jest używany, więc najlepiej unikać terminu "Rozszerzony ASCII". –

+0

W 1981 roku IBM opracował rozszerzenie 8-bitowego kodu ASCII, o nazwie "strona kodowa 437", w tej wersji zostały zastąpione niektóre przestarzałe znaki sterujące dla znaków graficznych.Dodano również 128 znaków, z nowymi symbolami, znakami, grafiką i łacińskimi literami, wszystkimi znakami interpunkcyjnymi i znakami potrzebnymi do pisania tekstów w innych językach, takich jak hiszpański. W ten sposób dodano znaki ASCII w zakresie od 128 do 255.http: //www.theasciicode.com.ar/extended-ascii-code/letter--withu-umlaut-diaeresis-woltercase-u-lelaut-ascii -code-129.html – Georges

6

Zasadniczo używamy tylko 128 znaków całkowitych, które są używane głównie podczas programu. Ale całkowita liczba znaków w tabeli ASCII wynosi 256 (od 0 do 255). Od 0 do 31 (łącznie 32 znaki) jest wywoływane jako znaki sterujące ASCII (kod znaku 0-31). 32 do 127 znaków jest wywoływane jako znaki drukowalne ASCII (kod postaci 32-127). 128 do 255 nazywa się rozszerzonymi kodami ASCII (kod znaku 128-255).

check referencyjny: http://www.ascii-code.com/

Większość rozszerzonego znak ASCII nie jest obecny w układzie QWERTY (angielski) klawiaturą, więc to jest powód, autor wziął 128 całkowity charakter w tym przykładzie w „Cracking wywiad kodowania " książka.

Powiązane problemy