Newsgroup: it.comp.lang.c
Titolo: Big-Endian

Per convertire un dato di una certa dimensione , > di  1 byte (es. 4 byte, o
6 byte, o più), da big-endian a little-endian ( o viceversa), basta
invertire il bit più significativo da destra a sinistra per ogni singolo
byte o per ogni 2 byte?
Saluti
Alberto

]

Attenzione, però, che esistono anche i Big-Big-Endian, i Big-Little-Endian e
via dicendo...
--
Alessandro Monti

da big-endian a little-endian ( o viceversa), basta...
...invertire l'ordine dei byte.
Se hai B0B1B2B3, devi riscriverlo in B3B2B1B0, o viceversa.
#include <stdio.h>
int main()
{
    int x = 1, y, i ;
    if (*(char *)&x == 1)
       printf("little-endian\n") ;
    else
       printf("big-endian\n") ;
    for ( i = sizeof x - 1, y = 0 ; i >= 0 ; i-- )
    {
        y |= ( x >> ( 8 * i ) ) & 0xFF ;
        y <<= 8 ;
    }
    if (*(char *)&y == 1)
       printf("little-endian\n") ;
    else
       printf("big-endian\n") ;
    return 0 ;
}
--
Andrea Laforgia
andrea_...@bigfoot.com

via dicendo...
Non lo sapevo... Ma chi e' che si diverte a creare questi mostri?
Saluti,
    Mardy

Non lo sapevo... Ma chi e' che si diverte a creare questi mostri?
Forse Alessandro Monti ? ;))
--
Andrea Laforgia
andrea_...@bigfoot.com

Cosa significano Big Endian & Little Endian?
Grazie
Marco


Si tratta di una delle cose piu' perverse dell'informatica...
E' l'ordine in cui vengono scritti i byte nei registri delle varie
cpu. Nella famiglia intel ad esempio il byte meno significativo e' a
destra, quindi little endian; in quella sun a sinistra (bug endian).
Oltre ai big-big endian etc nominati da Alessandro Monti (che no so
esattamente cosa siano), esistano rappresentazioni miste tipo i
"middle endian", dove, ad esempio, un long e' scritto in questo
ordine: 2143 (1 il byte meno significativo, 4 il piu'). 


 Non lo sapevo... Ma chi e' che si diverte a creare questi mostri?
Credo che non siano più utilizzati, ma non saprei essere più preciso. Uno
tra Intel e motorola, comunque, aveva una cosa simile, cioè non lasciava
contigui in memoria bit contigui su registro, in un verso o nell'altro.
A parte che con un little-endian (16 bit) i bit sono già sparsi un po' in
giro, dato che il bit 15 è nel byte 0 e si trova vicino al bit 0 nel byte 1,
no? A questo punto, dove mettere il bit 16? Prima del bit 0, del bit 8 o
dopo il bit 23 o dopo il 15? Mi gira un po' la testa...
--
Alessandro Monti

> P.S.. il big-big-endian č una invenzione di Alessandro Monti vero?
Perchč?
A me sembrava una cosa naturale, dato che per scrivere 2 byte ci sono 2
modi, ce ne sono 4! ecc...
Perchč porre limiti alla fantasia dei progettisti?
Non č stato detto niente a chi voleva contare fino a 1024 con le sue 10
dita... ;-)
--
Alessandro Monti

Cosa significano Big Endian & Little Endian?
Con il termine "endianess" ci si riferisce al modo in cui vengono
memorizzati da un particolare sistema i byte che costituiscono una
determinata struttura dati.
In particolare, se un intero, per esempio, formato da 2 byte viene
memorizzato in memoria con il byte meno significativo che precede
quello piu' significativo, si parla di "little-endian", come le
normali piattaforme DOS/Windows.
Nel caso del "big-endian" viene attuato l'ordine contrario.
--
Andrea Laforgia
andrea_...@bigfoot.com

dopo il bit 23 o dopo il 15? Mi gira un po' la testa...
Seguendo lo stesso criterio, i byte sono semplicemente nell'ordine
inverso.
--
Andrea Laforgia
andrea_...@bigfoot.com

Perchè porre limiti alla fantasia dei progettisti?
Converrai che una cosa e' lasciare i progettisti liberi di fare quello
che vogliono e una cosa e' mettergli in testa delle idee strampalate
;) di' la verita' i b-b-e te li sei inventati tu ! ;))
--
Andrea Laforgia
andrea_...@bigfoot.com

> ;) di' la verita' i b-b-e te li sei inventati tu ! ;))
Può darsi che me li sia sognati di notte, o che siano il frutto di qualche
allucinogeno di troppo, però mi pare proprio di ricordare di aver letto
questa cosa qualche annetto fa.
Dovrei andare a spulciare tra tutti i libri che ho in giro, le riviste e
altro materiale, sperando di non aver prestato (e mai più riavuto, come
capitava quando prestavo ancora i libri) proprio quello che conteneva il
concetto tanto fumoso.
Meglio forse ammettere di aver sognato, salvo che mi capiti sotto mano per
caso la fonte incriminata :-)
--
Alessandro Monti