mam sekwencje znaków Jestem karmienia z funkcją dekodowania:Jak uciec lub zakończyć sekwencję ucieczki w C
Na przykład:
"\x05three"
(Tak, to jest ciąg Pascal-style . funkcja tłumaczy ciągi długości-prefiksem do strun NUL)
pisałem kilka testów, wśród których:.
"\x04four"
I ku mojemu zaskoczeniu, wyszło jak "Oour". Przyjrzyjmy się bliżej, okazuje się, że specyfikacja na escape sequences dla Visual Studio pozwala, że moja sekwencja jest zasadniczo interpretowana jako \x04f
, która byłaby 79 w podstawie 10 (w ten sposób wynikowy ciąg staje się "Oour", 79 to "O")
Moje rozwiązanie było po prostu podzielić ciąg:
"\x04" "four"
pytanie: czy istnieje inny sposób na ucieczkę lub zakończyć sekwencję ucieczki?
'0x04f' to 4 * 16 + 15 = 79, więc" O ". –
0x4f (hex) ma wartość 79 w systemie dziesiętnym, co oznacza literę "O". 80 w systemie dziesiętnym (nie 0x80, który jest liczbą szesnastkową) to litera P. 0x80 ma 128 znaków dziesiętnych, co nie jest standardowym znakiem ASCII –
Dziękuję wam obojgu. Wstydzę się teraz. Zastanawiam się, czy dziś rano złapałem bezkofeinową puszkę ... – MPelletier