[Algemeen]hexadecimaal naar decimaal

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Steff   an

Steff an

14/04/2006 15:39:00
Quote Anchor link
Ik ben met een script bezig, dat script werkt met hexadecimale getallen.
Maar nu komt het: Op een site staat, dat:

88 58 01 00(hex)(4bytes) = 882000(nul te veel)
00 08 00 00(hex)(4bytes) = 2048
22 56 00 00(hex)(4bytes) = 22050

Hoe van hex naar decimalen uitrekenen en andersom.

Ps. Kom niet met alleen maar hexdec() aanzetten, want daar schiet ik niks mee op.

Edit:
Het moet php zijn...
Gewijzigd op 01/01/1970 01:00:00 door Steff an
 
PHP hulp

PHP hulp

03/12/2024 18:16:42
 
- SanThe -

- SanThe -

14/04/2006 15:44:00
Quote Anchor link
Hexdec() mag ik niet mee aankomen. Maar dan zul je de vraag meer moeten uitleggen.
 
Steff   an

Steff an

14/04/2006 15:47:00
Quote Anchor link
Ik ben met wav files aan het werken. Deze moet je via heximale getallen bewerken.

Website
 
- SanThe -

- SanThe -

14/04/2006 15:50:00
Quote Anchor link
Die getallen die hierboven staan zijn trouwens allemaal fout.
 
Steff   an

Steff an

14/04/2006 15:51:00
Quote Anchor link
Hoezo? Mijn getallen komen letterlijk van de site.
Gewijzigd op 01/01/1970 01:00:00 door Steff an
 
PHP erik

PHP erik

14/04/2006 15:55:00
Quote Anchor link
Ik zie ook geen hex-dec verband tussen:

88 58 01 00 en 882000
of
00 08 00 00 en 2048
of
22 56 00 00 en 22050

Dus leg uit.
 
- SanThe -

- SanThe -

14/04/2006 15:55:00
Quote Anchor link
Als je bv. 88 58 01 00 hex hebt dan is dat 2287468800 dec.

Edit: En 00 00 08 00 hex is 2048 dec
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Steff   an

Steff an

14/04/2006 15:56:00
Quote Anchor link
Quote:
Ik zie ook geen hex-dec verband tussen:


Ik ook niet, dus vraag ik het :)
 
PHP erik

PHP erik

14/04/2006 16:01:00
Quote Anchor link
88 58 01 00
Je moet ze elk als een aparte byte zien.
Want FF = 15 x 16 + 15 = 255 (= max van een byte)

Dan krijg je dus:

8 x 16 + 8 = 144
5 x 16 + 8 = 88
01 = 1
00 = 0

144 88 1 0


Er is dus echt geen verband...
 
- SanThe -

- SanThe -

14/04/2006 16:02:00
Quote Anchor link
En de dec 882000 geeft als hex 00 0D 75 50 en dat lijkt niet op wat jij hebt.
 
Steff   an

Steff an

14/04/2006 17:18:00
Quote Anchor link
Dus wat ik wil is wav files bewerken via php(ik weet dat het kan) meer uitleg:

http://ccrma.stanford.edu/CCRMA/Courses/422/projects/WaveFormat/
 
Mitch X

Mitch X

14/04/2006 18:32:00
Quote Anchor link
Steffan:
88 58 01 00(hex)(4bytes) = 882000

0x885801:
1 x 16^0 = 1
0 x 16^1 = 0
8 x 16^2 = 2048
5 x 16^3 = 20480
8 x 16^4 = 524288
8 x 16^5 = 8388608
============= +
8.935.425
Quote:
00 08 00 00(hex)(4bytes) = 2048

Bij de nullen komt er niets uit, dus die laat ik weg ;)
0x00080000:
8 x 16^4 = 524.288
Quote:
22 56 00 00(hex)(4bytes) = 22050

0x22560000:
6 x 16^4 = 393216
5 x 15^5 = 5242880
2 x 16^6 = 33554432
2 x 16^7 = 5368770912
================ +
5.407.961.440

Proof:
0xFF:
15 x 16^0 = 15
15 x 16^1 = 240
=========== +
255

Edit:
Zie ik dat ik nog je vraag beantwoord heb ook.
Gewijzigd op 01/01/1970 01:00:00 door Mitch X
 
- SanThe -

- SanThe -

14/04/2006 20:04:00
Quote Anchor link
Goed zo Mitch. Knap dat je er achter komt dat de hexwaardes achterste voren staan. Daar zou ik nooit aan gedacht hebben.
 
Mitch X

Mitch X

14/04/2006 20:57:00
Quote Anchor link
Ik volg je niet?
Je begint, voor zover ik weet/dacht te weten, net als bij binair en decimaal helemaal rechts.

En dan netjes de machten tellen ...
Voorbeeldjes:

bin. 0101:
1 x 2^0 = 1
1 x 2^2 = 4
======== +
5

dec. 6523:
3 x 10^0 = 3
2 x 10^1 = 20
5 x 10^2 = 500
6 x 10^3 = 6000
=========== +
6523

hex. DEAD
13 x 16^0 = 13
10 x 16^1 = 160
14 x 16^2 = 3504
13 x 16^3 = 53248
============= +
56925
 
Steff   an

Steff an

15/04/2006 12:42:00
Quote Anchor link
Na een goede nachtrust, de oplossing:

Voorbeeld:

88 58 01 00(hex)(4bytes) = 88200

88 is in een decimaal getal 136
58 is in een decimaal getal 88
01 is in een decimaal getal 1
00 is in een decimaal getal 0

136 * 16^0 = 136
88 * 16^2 = 22528
1 * 16^4 = 65536
--------+
88200


De rest van alle getallen kloppen ook.
Gewijzigd op 01/01/1970 01:00:00 door Steff an
 
Willem vp

Willem vp

15/04/2006 13:23:00
Quote Anchor link
SanThe:
Goed zo Mitch. Knap dat je er achter komt dat de hexwaardes achterste voren staan. Daar zou ik nooit aan gedacht hebben.
Even wat theorie: Intel-processors zijn "little endian", wat betekent dat het "least significant byte" als eerste wordt opgeslagen.

Oftewel: een hex-getal 0x01020304 wordt intern opgeslagen als bytes 0x04 0x03 0x02 0x01.

Onder andere Motorola- en SPARC-processors zijn big endian. Daar worden de bytes in de "juiste" volgorde opgeslagen.

Vooral bij het vertalen van software naar andere platforms is dit iets waar je rekening mee moet houden, omdat bijvoorbeeld binaire datafiles dan heel andere gegevens lijken te bevatten.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.