[ Príspevkov: 4 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 09.02.11
Prihlásený: 28.04.11
Príspevky: 14
Témy: 7 | 7
NapísalOffline : 01.03.2011 13:20 | pomoc s kodom

vysvetlil by mi niekto ako toto funguje.?
Kód:
#include <stdio.h>

int hex2num(char c)
{
   if(c>='0' && c<='9')return c-'0';
   return c-'A'+10;
}

int main(int argc,char *argv[])
{
   const char *in=":10010000214601360121470136007EFE09D21901XX";   //40
//    const char *in=":100010000C9445000C9445000C9445000C944500XX";   //4C
//    const char *in=":100020000C9445000C9445000C9445000C944500XX";   //3C
//    const char *in=":100030000C9445000C9445000C9445000C944500XX";   //2C
//    const char *in=":100040000C9445000C9445000C9445000C944500XX";   //1C
   int sum = 0;
   int cnt = ((hex2num(in[1])<<4) | hex2num(in[2])) + 4;
   for(int k=0;k<cnt;++k) sum += (hex2num(in[(k<<1)+1]) << 4) | hex2num(in[(k<<1)+2]);
   printf("%02X\n",((0xff-(sum&0xff))+1) & 0xff);
   return 0;
}


Offline

Skúsený užívateľ
Skúsený užívateľ
pomoc s kodom

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66 | 66
Bydlisko: Žilina
NapísalOffline : 01.03.2011 13:35 | pomoc s kodom

mno podľa názvu funkcie by som tipol, že ide o prevod z hexadecimálnej sústavy na číslo, avšak nechce sa mi to bližšie skúmať, keďže je to dosť prasácky zapísané
okrem toho, ako som ti písal v druhej téme, kód patrí do CODE!


_________________
C#, PHP, ...
Online

Skúsený užívateľ
Skúsený užívateľ
pomoc s kodom

Registrovaný: 11.01.09
Prihlásený: 27.02.25
Príspevky: 1397
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOnline : 01.03.2011 15:03 | pomoc s kodom

int hex2num( char c )
nazov hovori za vsetko - prevedie vstupny parameter znak na ciselny typ ( cize napr z '5' spravi 5 v int ). c - '0' preto, lebo ak je znak c 0, '0' - '0' je nula, cize int bude 0. '1' - '0' je rozdiel 1, cize vysledok je 1, atd ...

const char *in=":10010000214601360121470136007EFE09D21901XX";
retazec uchovavajuci hexadecimalne cisla, bajt po bajte, cize:
10 01 00 00 ... D2 19 01

hex2num( in[1] ) << 4 )
druhy prvok pola in ( prvy je in[0] a je rovny znaku ":" ) prevedie na cislo a vynasobi ho 2^4 ( lepsie povedane, bitovo posunie toto cislo o 4 bity dolava - nasobenie sa iba lahsie predstavuje ). Je to preto, lebo na prevod z hexa do dec sa druha cifra zprava v hexa cisle vynasobi sestnastkou a pripocita sa prva cifra zprava.

| hex2num( in[2] ) )
tu je to pripocitanie prvej cifry ( bitovy sucet ).

+ 4
k vysledku sa pripocita cislo 4 -- netusim z akeho dovodu ( vysledok cnt je 20 )

for( k = 0; k < cnt; ++k )
cyklus sa vykona cnt, teda 20-krat. Ak si pozries, kolko hex cisel velkosti 1 bajt sa nachadza v retazci in, uvidis, ze ich je presne 20

sum += ( hex2num( in[( k << 1 ) + 1] ) << 4) | hex2num( in[( k << 1 ) + 2] );
proces sa opakuje s tym, ze sa prejde vsetkych 20 ( v tomto pripade ) "bajtov"

Vysledok je sucet tychto bajtov v premennej sum ulozenych desiatkovo.

sum & 0xff
orezanie na spodny jeden bajt ( rozsah 0 - 255 )

printf( "%02X\n", ( ( 0xff - ( sum & 0xff ) ) + 1 ) & 0xff );
vypisanie vysledneho, este nejako orezneho cisla, v hexadecimalnom tvare


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 09.02.11
Prihlásený: 28.04.11
Príspevky: 14
Témy: 7 | 7
Napísal autor témyOffline : 01.03.2011 15:42 | pomoc s kodom

vdaka.:D


 [ Príspevkov: 4 ] 


pomoc s kodom



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc kodom

v Redakčné systémy

4

562

26.03.2007 12:16

kajbo

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc s umiestnenym kodom

v JavaScript, VBScript, Ajax

1

343

24.10.2012 11:07

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

problem s PHP kódom

v PHP, ASP

4

424

03.01.2013 12:42

saboter14

V tomto fóre nie sú ďalšie neprečítané témy.

problem s kodom v C

v Assembler, C, C++, Pascal, Java

6

504

01.01.2011 7:32

reDo

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s php kodom pravdepodobne cookies

v PHP, ASP

9

584

15.06.2007 17:35

chiwo

V tomto fóre nie sú ďalšie neprečítané témy.

Problem s ochranym kodom v mobile

v Mobilné zariadenia

2

589

22.12.2008 14:52

majky358

V tomto fóre nie sú ďalšie neprečítané témy.

str_replace - nahradenie nového riadku kódom <br>

v PHP, ASP

7

844

30.12.2010 10:37

blazej44800

V tomto fóre nie sú ďalšie neprečítané témy.

"Náhodné" sms s kódom od google

v Služby a webstránky

1

356

27.09.2020 9:47

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

pomoc pomoc prosim nefunguje internet

v Ovládače

7

1298

09.09.2017 20:37

Smith Wesson

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc pri pomoc pri skladaní PC - od 1 500 do 1 800 Eur (rozlíšenie 1440p)

v PC zostavy

13

983

28.09.2023 20:23

johny314

V tomto fóre nie sú ďalšie neprečítané témy.

pomoc

v ATI/AMD grafické karty

3

750

04.03.2008 15:00

Mir

V tomto fóre nie sú ďalšie neprečítané témy.

pomoc

v nVidia grafické karty

1

1095

02.02.2007 10:51

Harlequin

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc

v Operačné systémy Microsoft

3

694

29.12.2007 18:42

Dzimbo

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc

v Zvuk

2

885

24.11.2007 17:30

optyx

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc?

v HTML, XHTML, XML, CSS

1

604

09.08.2017 20:01

BX

V tomto fóre nie sú ďalšie neprečítané témy.

pomoc

v PHP, ASP

2

845

02.02.2008 17:17

Punker661



© 2005 - 2025 PCforum, edited by JanoF