| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 09.02.11 Prihlásený: 28.04.11 Príspevky: 14 Témy: 7 |
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; }
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
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, ... |
|
Registrovaný: 11.01.09 Prihlásený: 26.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 01.03.2011 15:03 | |
|
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
|
|
Registrovaný: 09.02.11 Prihlásený: 28.04.11 Príspevky: 14 Témy: 7 | Napísal autor témy peto2301: 01.03.2011 15:42 | |
|
vdaka.
|
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| Pomoc kodom v Redakčné systémy | 4 | 522 | 26.03.2007 12:16 kajbo | | Pomoc s umiestnenym kodom v JavaScript, VBScript, Ajax | 1 | 312 | 24.10.2012 11:07 Ďuri | | problem s PHP kódom v PHP, ASP | 4 | 374 | 03.01.2013 12:42 saboter14 | | problem s kodom v C v Assembler, C, C++, Pascal, Java | 6 | 460 | 01.01.2011 7:32 reDo | | Problem s ochranym kodom v mobile v Mobilné zariadenia | 2 | 551 | 22.12.2008 14:52 majky358 | | Problem s php kodom pravdepodobne cookies v PHP, ASP | 9 | 542 | 15.06.2007 17:35 chiwo | | str_replace - nahradenie nového riadku kódom <br> v PHP, ASP | 7 | 801 | 30.12.2010 10:37 blazej44800 | | "Náhodné" sms s kódom od google v Služby a webstránky | 1 | 306 | 27.09.2020 9:47 shiro | | pomoc pomoc prosim nefunguje internet v Ovládače | 7 | 1141 | 09.09.2017 20:37 Smith Wesson | | Pomoc pri pomoc pri skladaní PC - od 1 500 do 1 800 Eur (rozlíšenie 1440p) v PC zostavy | 13 | 805 | 28.09.2023 20:23 johny314 | | Pomoc v Počítačové hry | 2 | 588 | 13.06.2012 18:02 PepeTheDragon | | pomoc v JavaScript, VBScript, Ajax | 2 | 878 | 15.05.2009 20:15 firewall | | POMOC [ Choď na stránku: 1, 2 ] v Ostatné | 30 | 2273 | 27.09.2009 20:01 workoholik16 | | pomoc v ATI/AMD grafické karty | 10 | 1061 | 10.01.2008 8:48 kasom | | Pomoc v Audio programy | 4 | 941 | 05.02.2008 10:06 raikonen11 | | pomoc v HTML, XHTML, XML, CSS | 1 | 375 | 18.10.2013 18:36 Ďuri |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|