Přepis kódu z Python do C# – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přepis kódu z Python do C# – Python – Fórum – Programujte.comPřepis kódu z Python do C# – Python – Fórum – Programujte.com

 

Bedas0
Duch
7. 5. 2011   #1
-
0
-

Zdravím, měm k dispozici kód pythonovskej, který bych potřeboval překodovat do C, resp. C#. Ale jde mě o to, že nechápu syntaxi pyhonu a nemám čas a ani v plánu se ji učit. Co jsem si vygooglil, tak z toho jsem to stejně moc nepobral, tak bych byl velice vděčný za vaši pomoc. Pro vás to bude lahůdka. :) Takže mám následující kod:



ticks,pkt = packet[2:10], packet[10:-1] //packet[2] až [10] je uložen v poli ticks či kde?
ticks = struct.unpack('LL',ticks) // co udělá toto?
tstamp = ((ticks[0]*self.ticknb) + ticks[1]) * self.tscale //co je uloženo v tstamp? (self.tscale + self.ticknb jsou prostě nějaké konstanty)
t_sec = int(tstamp) //t_sec se rovná prostě přetypované tstamp ?
t_usec = int((tstamp-t_sec)*1.0e6) //
ts = struct.pack('LL',(t_sec+self.timebase),t_usec)


packet je pole bajtů od 1 do x. Přičemž packet[2..10] je to co mě zajímá. Moje otázky viz komentáře v kodu výše.
Jinak pokud to nějak pomůže vám..tvůrce kodu mě to vysvětlil takto, ale nepobírám to:


# Byte 2..10 holds the firmware representation of the time.
# it consists of two 32 bit numbers
# ticks[0] - is the current count of clock overflows for this packet
# ticks[1] - is the current number of clock ticks for this packet
ticks,pkt = packet[2:10], packet[10:-1]

# These constants are also needed, they depend on the firmware
# (F_CPU and timer configuration)
# self.ticknb - number of clock ticks until overflow.
# self.tscale - is the timebase (e.g. how long lasts one tick)
ticks = struct.unpack('LL',ticks)
tstamp = ((ticks[0]*self.ticknb) + ticks[1]) * self.tscale

# now repack the values for wireshark
# self.timebase = int(time.time())
# (the Python code so far sends this value to the firmware too, but
# in fact it is not needed there anymore, because after some trials the
# conclusion was to compute the time value on the PC ... I'll remove it).
t_sec = int(tstamp)
t_usec = int((tstamp-t_sec)*1.0e6)
ts = struct.pack('LL',(t_sec + self.timebase),t_usec)

Nahlásit jako SPAM
IP: 46.33.97.–
nervak0
Věrný člen
8. 5. 2011   #2
-
0
-
Nahlásit jako SPAM
IP: 213.211.51.–
Bedas0
Duch
8. 5. 2011   #3
-
0
-

Vždyt to všechno píšu nahoře, co mně právě není jasný.
Já potřebuju vědět, co s těma 32bitovýma hodnotama mám udělat. A to bych po vás chtěl, jestli byste mě to z toho kodu neobjasnili, abych to mohl implementovat v C.

Nahlásit jako SPAM
IP: 46.33.97.–
sputnikone+1
Věrný člen
9. 5. 2011   #4
-
0
-
Nahlásit jako SPAM
IP: 147.251.201.–
nervak0
Věrný člen
9. 5. 2011   #5
-
0
-

uint32_t *ticks = (uint32_t *) &packet[2];

double tstamp = (ticks[0] * ticknb + ticks[1]) * tscale;
uint32_t sec = (uint32_t) tstamp;
uint32_t usec = (uint32_t) ((tstamp - sec) * 1.0e6);
uint32_t ts[2] = { sec + timebase, usec };

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý