Mijn vraag
[ Voor 96% gewijzigd door Verwijderd op 01-07-2020 08:00 ]
[ Voor 6% gewijzigd door DataGhost op 10-06-2020 15:40 ]
Wat is de endian in je binary file?Verwijderd schreef op woensdag 10 juni 2020 @ 15:35:
Stel ik lees dus 3 bytes uit, in hex notatie: AB56FD, dan wil ik dit als 4 bytes wegschrijven, bijvoorbeeld AB506FD0 (ik neem aan dat de nullien achteraan moeten (minst significante bits).
Da zou 't domste file format ever zijn. No way.Verwijderd schreef op woensdag 10 juni 2020 @ 16:44:
Ik begin nu een beetje een vermoeden te krijgen dat de bits achter elkaar zitten, dus eerst de 350000 minst significante bits, dan de bits die voor 2 staan, dan die voor 4 etc. Of precies omgekeer. De data in het eerste 1/3 deel ziet er heel anders uit dan in het tweede 2/3 deel.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Hoe kan 12 bits data resulteren is 3 bytes? En als je dat opslaat als 4 bytes, wordt het 32 bits ipv 16. Zitten er in die 3 bytes niet gewoon 2 sample waardes?Verwijderd schreef op woensdag 10 juni 2020 @ 15:35:
Mijn vraag
Ik heb een bestand met ongeveer 350000 elementen (sensor-samples) van 12-bit (12 bit WORDS). De nabewerking is echter alleen geschikt voor 16-bit data.
Stel ik lees dus 3 bytes uit, in hex notatie: AB56FD, dan wil ik dit als 4 bytes wegschrijven, bijvoorbeeld AB506FD0 (ik neem aan dat de nullien achteraan moeten (minst significante bits).
Relevante software en hardware die ik gebruik
MAMP
Ik heb geen idee hoe bit-operaties te doen in PHP, met name omdat ik merk dat variabelen in PHP altijd multi-mode zijn: getallen kun je als string gebruiken etc. Waarschijnlijk is het met een paar regels op te lossen.
Dat is wel wat ik eruit haal, aangezien hij zijn padding laat zien als xxx0xxx0 ipv xxxxxx00.PageFault schreef op woensdag 10 juni 2020 @ 17:16:
[...]
Hoe kan 12 bits data resulteren is 3 bytes? En als je dat opslaat als 4 bytes, wordt het 32 bits ipv 16. Zitten er in die 3 bytes niet gewoon 2 sample waardes?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php //Stel je hebt een byte array $raw=[0xAB, 0x56, 0xFD]; //Dan per 3 bytes uitlezen in een loop for($idx=0;$idx<count($raw);$idx+=3) { //en schuiven met bits met << of >> //of gebruik maken van logical AND: & $v1 = ($raw[$idx] << 4) + ( $raw[$idx+1] >> 4); $v2 = (($raw[$idx+1] & 0xF) << 8) + $raw[$idx+2]; //resultaat, in hex voor de duidelijkheid echo dechex($v1) . " " . dechex($v2) . "\n"; } |
ab5 6fd
[ Voor 65% gewijzigd door RobIII op 10-06-2020 17:58 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Gaat het om alleen numerieke data?DataGhost schreef op woensdag 10 juni 2020 @ 17:25:
[...]
Dat is wel wat ik eruit haal, aangezien hij zijn padding laat zien als xxx0xxx0 ipv xxxxxx00.
{signature}
Dit is niet helemaal gerelateerd aan je probleem zelf, maar even voor de duidelijkheid: als jij eenmaal een integer of float hebt dan zal ook PHP het niet zomaar omzetten naar een string tenzij je zelf iets doet om er weer een string van te maken. Zolang je zelf geen string-bewerkingen op zo'n getal doet en je het getal ook niet in een functie stopt die dat wél wil doen zal zo'n variabele niet ineens van type veranderen.Verwijderd schreef op woensdag 10 juni 2020 @ 15:35:
Ik heb geen idee hoe bit-operaties te doen in PHP, met name omdat ik merk dat variabelen in PHP altijd multi-mode zijn: getallen kun je als string gebruiken etc.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Apple iPhone 16e LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq