Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: Kodowanie dat w ASCII

Jestem laikiem, mam plik, który wygląda tak :


hU--8N
hU-.8N
hU-/8N
hU-08N
hU-28N
hU-<8N
hU-?8N


co odpowiada następującym godzinom:

08:30:00
08:30:01
08:30:02
08:30:03
08:30:05
08:30:15
08:30:30


mogę wkleić więcej bo mam 16 tysięcy godzin.
Kodowanie składa się z sześciu znaków, właściwie zakodowane są tu jednocześnie czasy i daty, dzisiejszemu dniu odpowiadają dwa pierwsze znaki 'hU'.
na kolejnych sześciu pozycjach mam takie liczby różnych znaków :
> length(z1)
[1] 1
length(z2)
[1] 1
length(z3)
[1] 3
length(z4)
[1] 82
length(z5)
[1] 10
length(z6)
[1] 60

wszystkie znaki w tym kodowaniu dla dnia dzisiejszego to :
unique(c(z1,z2,z3,z4,z5,z6))
[1] "h" "U" "-" "." "/" "0" "2" "<" "?" "A" "B" "F" "I" "J" "M" "P"
[17] "T" "V" "W" "Z" "[" "]" "^" "_" "`" "a" "d" "e" "f" "g" "3" "6"
[33] ":" "=" "@" "C" "D" "E" "H" "K" "L" "N" "Q" "R" "X" "Y" "\\" "b"
[49] "c" "1" "5" "8" "7" ">" "G" "O" "S" "4" ";" "9" "i" "j" "k" "l"
[65] "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "{" "|"
[81] "}" "~"

Na razie rozgryzłem tyle, że 4 pozycja kodowania odpowiada sekundom :D

Ma ktoś jakieś pomysł ?

Na ostatniej pozycji mam pewnie zakodowane minuty, bo w tej kolumnie znajduje się 60 różnych znaków, czyli jeden na każdą z 60 minut. :)

a na 5 godziny, bo dane obejmują 10 godzin zegarowych, ale co z resztą ?Kamil B edytował(a) ten post dnia 07.02.12 o godzinie 18:38

konto usunięte

Temat: Kodowanie dat w ASCII

To nie jest żadne kodowanie tylko zapis binarny.

hU--8N to binarnie 68 55 2D 2D 38 4E (08:30:00)
hU-.8N to binarnie 68 55 2D 2E 38 4E (08:30:01)
hU-/8N to binarnie 68 55 2D 2F 38 4E (08:30:02)

Ponieważ wartość binarna zmienia się o 1 co sekundę to masz szczęście - gdyby były w tym milisekundy ciężko byłoboby to rozgryźć.

Szkoda że nie podałeś wartości z innych godzin, ale:
1) nie jest to kodowanie cyfra w cyfrę bo wtedy w 08:30:00 miałbyś 4 takie same cyfry a masz tylko dwie

2) nie jest to kodowanie binarne samego czasu bo ten z dokładnością do sekund mieści się na 17 bitach czyli 3 bajtach.

Wnioski:
A) Albo pole zawiera również datę (porównaj dla innych dni)
B) Albo to kodowanie cyfra-w-cyfrę tylko zaszyfrowane - szyfr podstawieniowy, przestawienie pozycji i każda pozycja w wartości inaczej - wtedy wystarczy przejrzeć dane dla innych godzin i znaleźć odpowiednie zależności

Najlepiej to analizuj pod edytorem hexadecymalnym.Piotr L. edytował(a) ten post dnia 07.02.12 o godzinie 21:09
Kamil Bęczyński

Kamil Bęczyński R, SAS, analizy

Temat: Kodowanie dat w ASCII

Wkleję więcej danych.

hU--8N to binarnie 68 55 2D 2D 38 4E (08:30:00)
Zorientowałem się już, że pozycja z '8' oznacza godzinę, z 'N' minutę, 'hU' to data, czwarta pozycja to na pierwszy rzut oka zawiera sekundy, ale nie tylko, bo posiada, aż 82 różne wartości, pozostaje również 3 pozycja.

Dodam trochę więcej danych :


Obrazek


tyle, że teraz wszystko wygląda na jasne, jednak tak nie jest...Kamil B edytował(a) ten post dnia 07.02.12 o godzinie 23:06

konto usunięte

Temat: Kodowanie dat w ASCII

Dla podanego zakresu:

Wartość:
hU--8N to binarnie 68 55 2D 2D 38 4E (08:30:00)

to inaczej binarnie xx xx xx SS HH MM

gdzie:
SS to sekundy
przez analogie można znaleźć wartości:
0x2D / '-' => 00,
0x3C / '<' => 15,
0x4B / 'K' => 30,
0x5A / 'Z' => 45,
i pewnie
0x5A + 0x0A (10) = 0x64 / 'd' => 55
etc.

MM to minuty
0x30 / '0' => 00
0x67 / 'g' => 55
0x68 / 'h' => 56
i prawdopodobnie
0x38 / '8' => 08

HH to godziny
0x38 / '8' => 08
0x39 / '9' => 09
0x3A / ':' => 10

xx xx xx to część nieznana (data?)

Stąd wniosek:
HH = 0x30 + wartość godziny
MM = 0x30 + wartość minut
SS = 0x2D + wartość sekund

Sprawdź dla których wartości się to nie zgadza - bo skoro jest 82 różnych wartości sekund to pewnie coś jeszcze trzeba uwzględnić.

konto usunięte

Temat: Kodowanie dat w ASCII

Witam,
chyba będzie to tak:

sekundy: Kod Ascii szyfru - 45 (4 pozycja)
minuty: Kod Ascii szyfru - 48 (6 pozycja)
godziny: Kod Ascii szyfru - 48 (5 pozycja)

Pozdrawiam.

Następna dyskusja:

[C++] przesuwanie dat o zad...




Wyślij zaproszenie do