4 bájton tárolt számból hogy lehet kinyerni a számot alkotó bájtok értékeit? (bővebben lent)
Adott egy bármilyen szám, amely a nagysága miatt 4 bájton van tárolva, például: 1457664 (de lehet bármilyen szám).
Az adott számot alkotó bájtok mindegyikének értékét milyen művelettel lehet megtudni? Mit kell alkalmazni?
Az átalakítást így írtam meg:
Tudsz segíteni a kód módosítását illetően abban, hogy akár átalakításkor, akár visszaalakításkor az előjelekre is figyeljen?





Egyébként az eddigi válaszok nem jók azt figyelembe véve, ha szó szerint a kérdést értem. Azaz ha konkrétan a bájtok értékeit olvasnánk ki akkor ugyanazon szám esetében eltérő sorrendet tapasztalnánk eltérő endianness-el (bájtsorrend) rendelkező hardver esetében, az eddig leírtak endianness függetlenek azaz az adott bájtsorrendtől függetlenül egységesen működne, nem a nyers bájtok értékeinek kinyerését szolgálják. Bár általában tapasztalatom szerint a bájtsorrend a legtöbb hardveren little-endian, de big-endian esetében pont fordítva lenne a sorrend.
A b_pointer változó ami bájt típusú pointer, ennek értékét állítottam be a test_varitable longint típusú változó kezdőcímére ( b_pointer := @test_varitable;
). Majd a += operátorral egyesével léptettem a b_pointer által mutatott memóriacímet és kiolvastam azoknak értékeit.





"de big-endian esetében pont fordítva lenne a sorrend."
A byte sorrendnek (a kérdés szempontjából) semmilyen jelentősége nincs.















"Az adott számot alkotó bájtok mindegyikének értékét milyen művelettel lehet megtudni?"
Válasszuk ketté:
1.: a konkrét adott hardveren az adott számra vonatkozóan
2.: hardverfüggetlenül az adott számra vonatkozóan
"A byte sorrendnek (a kérdés szempontjából) semmilyen jelentősége nincs."
Akár az 1. vagy 2. esetre vagyunk kíváncsiak akkor is jelentősége van annak, hogy milyen a byte sorrend (Konkrétan lehet rá írni hardverfüggetlen programot pl oktatás céljából ami kiszámítja az inputba megadott szám nem csak egy fajta bájtsorrend szerinti bájtonkénti értékeit). Az shl és shr hardverfüggetlenül működik persze az adott hardveren értelmezett értékek erejéig (, ha már megnézzük a nyers bájtjait akkor már természetesen nem hardverfüggetlen).
Ha 4 bájtos integer shift (shl, shr) műveleteiről beszélünk kizárólag és abban a konkrét alkalmazásban/esetben lényegtelen a bájtsorrend akkor triviálisan nem számít a bájt sorrend.





Bájtsorrend akkor számit, ha a kérdezőnek számit.
Amúgy egy négy darabos halmaz az eredmény. Bájtok halmaza.
Az első válaszadó megoldása is jó, és a shifteléses is.
[oo..ooo.] shl 2 = [..ooo....]





Nem számít semmit a sorrend, mert a kérdés az volt hogyan lehet szétszedni.
Akármilyen sorrendben vannak a bájtok, a szétszedés módszere (a hogyan) nem változik, ugyanúgy kell szétszedni.





"mert a kérdés az volt hogyan lehet szétszedni."
A kérdés valóban ez volt, de a kérdező felől volt arra is utalás, hogy miképpen lehet az eredményül kapott byte-okból az eredeti számot visszaállítani. Ehhez meg szükséges a byte sorrend ismerete.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!