- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- laskr99: Újrakezdem a processzor és videókártya szilícium magok fotózását
- gban: Ingyen kellene, de tegnapra
- VoidXs: Tényleg minden játék optimalizálatlan?
- Steven: Sokat utazó kávéfüggők ide!
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- droidic: Így beszélhetsz élő emberrel EA supportban
- Magga: PLEX: multimédia az egész lakásban
-
LOGOUT
Új hozzászólás Aktív témák
-
sghc_toma
senior tag
mért akarod mindenképp elkerülni a konverziót?
strtol-lal konvertálsz int-té, itoa-val meg vissza.. én vhogy így csinálnám, aztán lehet, hogy tényleg van jobb megoldás.. (az is lehet. hogy ez az egyik legrosszabb)
char* HexNumber = ''CDAB'';
char* FirstTwoBytes;
memcpy(FirstTwoBytes, HexNumber, 2);
int a = strtol(HexNumber + 2, NULL, 16) * 128 + (int)(strtol(FirstTwoBytes, NULL, 16) / 2);
char buf[4];
HexNumber = itoa(a, buf, 16);
memcpy(FirstTwoBytes, HexNumber + 2, 2);
memcpy(HexNumber + 2, HexNumber, 2);
memcpy(HexNumber, FirstTwoBytes, 2); -
Jester01
veterán
Ugye a kettővel osztás az egy bit léptetés. Hexa ábrázolás esetén a szomszédos jegy legalsó bitje kell még a működéshez.
Számolgatással pl. így lehet:
inline char to_hex(int v)
{
return v > 9 ? (v + 'A' - 10) : (v + '0');
}
inline int from_hex(char c)
{
return c > '9' ? (c - 'A' + 10) : (c - '0');
}
void shift(char* buffer)
{
int i;
int carry = 0;
for(i = 3; i >= 0; i--)
{
int v = from_hex(buffer[ i ]);
buffer[ i ] = to_hex((v >> 1) | carry);
carry = (v << 3) & 8;
}
}
Ha a számolgatás nem tetszik, akkor lookup táblát is lehet csinálni, pl így:
void shift(char* buffer)
{
static struct { char out[2], f; } map['G'] = {
['0'] = {''08'', 0},
['1'] = {''08'', 1},
['2'] = {''19'', 0},
['3'] = {''19'', 1},
['4'] = {''2A'', 0},
['5'] = {''2A'', 1},
['6'] = {''3B'', 0},
['7'] = {''3B'', 1},
['8'] = {''4C'', 0},
['9'] = {''4C'', 1},
['A'] = {''5D'', 0},
['B'] = {''5D'', 1},
['C'] = {''6E'', 0},
['D'] = {''6E'', 1},
['E'] = {''7F'', 0},
['F'] = {''7F'', 1}
};
int i;
int flag = 0;
for(i = 3; i >= 0; i--)
{
char c = buffer[ i ];
buffer[ i ] = map[c].out[flag];
flag = map[c].f;
}
}
Hibakezelés ezekben nyilván nincs.
Más ötlet momentán nem jut eszembe.
[Szerkesztve]
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Otthoni hálózat és internet megosztás
- Gaming notebook topik
- Éjszakai műszak
- One otthoni szolgáltatások (TV, internet, telefon)
- Motorola Moto G56 - bátyja árnyékában
- LEGO klub
- Miskolc és környéke adok-veszek-beszélgetek
- iPhone topik
- MiLi MiTag, MiLi LiTag bluetooth trackerek
- 3D nyomtatás
- További aktív témák...
- Dell Precision 7670 FHD+ i9-12950HX 16C / 64G D5 / 1T G4 / Quadro RTX A4500 16GB / HU vb Pro tervező
- LG OLED55G42LW LG Gyári garancia 3 év
- HP EliteBook 840G6 ! AKCIÓ!!! a készlet erejéig!
- Kobo Aura Edition 2 (N236) 6" háttérvilágításos kijelzővel, 4 GB-os tárhellyel - jó állapotban
- HP ProBook 430 G8, 13,3" FHD IPS, I5-1135GU CPU, 16GB DDR4, 256GB SSD, WIN 11, 27% áfás számla, 1 év
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 16/32/64GB RAM RTX 4060Ti 8GB GAMER PC termékbeszámítással
- MacBook felvásárlás!! MacBook, MacBook Air, MacBook Pro
- Bomba ár! Dell Latitude E5550 - i3-5GEN I 8GB I 128GB SSD I 15,6" HD I W10 I HDMI I Cam I Gari!
- Apple iPhone 14 128GB, Kártyafüggetlen, 1 Év Garanciával
- Bomba ár! HP ProBook 440 G10 - i5-1335U I 16GB I 256SSD I 14" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest