Pacchetto | flash.utils |
Classe | public class ByteArray |
Ereditarietà | ByteArray ![]() |
Implementa | IDataInput, IDataOutput |
Sottoclassi | ByteArrayAsset |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Nota: la classe ByteArray è destinata agli sviluppatori esperti che necessitano di accedere ai dati a livello di byte.
I dati in memoria sono un array compresso (la rappresentazione più compatta del tipo di dati) di byte, ma un'istanza della classe ByteArray può essere manipolata mediante gli operatori standard []
(accesso array). Può anche essere letta e scritta in un file in memoria, utilizzando metodi simili a quelli delle classi URLStream e Socket.
Inoltre, sono supportate la compressione e decompressione zlib, deflate e lzma, e la serializzazione oggetto AMF (Action Message Format).
Un oggetto ByteArray può condividere la propria memoria di supporto con più istanze worker impostandone la propria proprietà shareable
su true
.
La classe ByteArray può essere utilizzata per le seguenti operazioni:
- Creare un protocollo personalizzato per la connnessione a un server.
- Scrivere un vostro URLEncoder/URLDecoder.
- Scrivere un vostro pacchetto AMF/Remoting.
- Ottimizzare le dimensioni dei dati mediante i tipi di dati.
- Utilizzare dati binari caricati da un file.
Altri esempi
Lettura e scrittura di un ByteArray
Esempio di ByteArray: lettura di un file zip
Elementi API correlati
Proprietà | Definito da | ||
---|---|---|---|
bytesAvailable : uint [sola lettura]
Il numero di byte di dati disponibili per la lettura dalla posizione corrente dell'array di byte alla fine dell'array. | ByteArray | ||
![]() | constructor : Object
Un riferimento all'oggetto classe o alla funzione di costruzione per una determinata istanza di oggetto. | Object | |
defaultObjectEncoding : uint [statico]
Denota la codifica oggetto predefinita che la classe ByteArray deve utilizzare per una nuova istanza ByteArray. | ByteArray | ||
endian : String
Modifica o legge l'ordine dei byte dei dati: costante BIG_ENDIAN o LITTLE_ENDIAN. | ByteArray | ||
length : uint
La lunghezza dell'oggetto ByteArray in byte. | ByteArray | ||
objectEncoding : uint
Consente di determinare se deve essere utilizzato il formato ActionScript 3.0, 2.0 o 1.0 per scrivere su o leggere da un'istanza ByteArray. | ByteArray | ||
position : uint
Sposta o restituisce la posizione corrente (in byte) del puntatore di file nell'oggetto ByteArray. | ByteArray | ||
shareable : Boolean
Specifica se la memoria sottostante dell’array di byte è condivisibile. | ByteArray |
Metodo | Definito da | ||
---|---|---|---|
Crea un'istanza ByteArray che rappresenta un array compresso di byte, in modo che sia possibile utilizzare i metodi e le proprietà della classe per ottimizzare l'archiviazione e il flusso dei dati. | ByteArray | ||
In una singola operazione atomica, confronta un valore intero di questo array di byte con un altro valore intero e, se coincidono, scambia i relativi byte con un altro valore. | ByteArray | ||
In una singola operazione atomica, confronta la lunghezza di questo array di byte con un valore specificato e, se i due valori coincidono, modifica la lunghezza di questo array di byte. | ByteArray | ||
Cancella il contenuto dell'array di byte e reimposta le proprietà length e position su 0. | ByteArray | ||
Comprime l'array di byte. | ByteArray | ||
Comprime l'array di byte utilizzando l'algoritmo di compressione deflate. | ByteArray | ||
![]() |
Indica se per un oggetto è definita una proprietà specifica. | Object | |
Decomprime l'array di byte utilizzando l'algoritmo di compressione deflate. | ByteArray | ||
![]() |
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. | Object | |
![]() |
Indica se la proprietà specificata esiste ed è enumerabile. | Object | |
Legge un valore booleano dal flusso di byte. | ByteArray | ||
Legge un byte con segno dal flusso di byte. | ByteArray | ||
Legge il numero di byte di dati, specificato dal parametro lunghezza, dal flusso di byte. | ByteArray | ||
Legge un numero a virgola mobile IEEE 754 a precisione doppia (64 bit) dal flusso di byte. | ByteArray | ||
Legge un numero a virgola mobile IEEE 754 a precisione singola (32 bit) dal flusso di byte. | ByteArray | ||
Legge un numero intero con segno a 32 bit dal flusso di byte. | ByteArray | ||
Legge una stringa multibyte della lunghezza specificata dal flusso di byte, utilizzando il set di caratteri specificato. | ByteArray | ||
readObject():*
Legge un oggetto dall'array di byte, codificato nel formato serializzato AMF. | ByteArray | ||
Legge un numero intero con segno a 16 bit dal flusso di byte. | ByteArray | ||
Legge un byte senza segno dal flusso di byte. | ByteArray | ||
Legge un numero intero senza segno a 32 bit dal flusso di byte. | ByteArray | ||
Legge un numero intero senza segno a 16 bit dal flusso di byte. | ByteArray | ||
Legge una stringa UTF-8 dal flusso di byte. | ByteArray | ||
Legge una sequenza di byte UTF-8 specificata dal parametro lunghezza dal flusso di byte e restituisce una stringa. | ByteArray | ||
![]() |
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | |
Fornisce un metodo sostituibile per personalizzare la codifica JSON dei valori in un oggetto ByteArray. | ByteArray | ||
![]() |
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | |
Converte l'array di byte in una stringa. | ByteArray | ||
Decomprime l'array di byte. | ByteArray | ||
![]() |
Restituisce il valore di base dell'oggetto specificato. | Object | |
Scrive un valore booleano. | ByteArray | ||
Scrive un byte nel flusso di byte. | ByteArray | ||
Scrive una sequenza di byte (del numero indicato dal parametro length) dall'array di byte specificato (bytes), a partire dal numero di byte offset (numero intero a base zero) nel flusso di byte. | ByteArray | ||
Scrive un numero a virgola mobile IEEE 754 a precisione doppia (64 bit) nel flusso di byte. | ByteArray | ||
Scrive un numero a virgola mobile IEEE 754 a precisione singola (32 bit) nel flusso di byte. | ByteArray | ||
Scrive un numero intero con segno a 32 bit nel flusso di byte. | ByteArray | ||
Scrive una stringa multibyte in un flusso di byte utilizzando il set di caratteri specificato. | ByteArray | ||
Scrive un oggetto nell'array di byte nel formato serializzato AMF. | ByteArray | ||
Scrive un numero intero a 16 bit nel flusso di byte. | ByteArray | ||
Scrive un numero intero senza segno a 32 bit nel flusso di byte. | ByteArray | ||
Scrive una stringa UTF-8 nel flusso di byte. | ByteArray | ||
Scrive una stringa UTF-8 nel flusso di byte. | ByteArray |
bytesAvailable | proprietà |
bytesAvailable:uint
[sola lettura] Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Il numero di byte di dati disponibili per la lettura dalla posizione corrente dell'array di byte alla fine dell'array.
Utilizzate la proprietà bytesAvailable
in combinazione con i metodi di lettura ogni volta che si accede a un oggetto ByteArray per verificare che i dati letti siano validi.
Implementazione
public function get bytesAvailable():uint
defaultObjectEncoding | proprietà |
defaultObjectEncoding:uint
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Denota la codifica oggetto predefinita che la classe ByteArray deve utilizzare per una nuova istanza ByteArray. Quando si crea una nuova istanza ByteArray, la codifica dell'istanza inizia con il valore di defaultObjectEncoding
. La proprietà defaultObjectEncoding
è inizializzata su ObjectEncoding.AMF3
.
Quando un oggetto viene scritto o letto da dati binari, il valore objectEncoding
consente di determinare se deve essere utilizzato il formato ActionScript 3.0, 2.0 o 1.0. Questo valore è una costante della classe ObjectEncoding.
Implementazione
public static function get defaultObjectEncoding():uint
public static function set defaultObjectEncoding(value:uint):void
Elementi API correlati
endian | proprietà |
endian:String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Modifica o legge l’ordine dei byte dei dati: Endian.BIG_ENDIAN
o Endian.LITTLE_ENDIAN
. Il valore predefinito è BIG_ENDIAN
.
Implementazione
public function get endian():String
public function set endian(value:String):void
Elementi API correlati
length | proprietà |
length:uint
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
La lunghezza dell'oggetto ByteArray in byte.
Se invece è impostata su un valore superiore alla lunghezza corrente, il lato destro dell'array di byte viene riempito di zeri.
Se la lunghezza è impostata su un valore inferiore alla lunghezza corrente, l'array di byte viene troncato.
Implementazione
public function get length():uint
public function set length(value:uint):void
objectEncoding | proprietà |
objectEncoding:uint
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Consente di determinare se deve essere utilizzato il formato ActionScript 3.0, 2.0 o 1.0 per scrivere su o leggere da un'istanza ByteArray. Questo valore è una costante della classe ObjectEncoding.
Implementazione
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
Elementi API correlati
position | proprietà |
position:uint
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Sposta o restituisce la posizione corrente (in byte) del puntatore di file nell'oggetto ByteArray. Questo è il punto in cui la successiva chiamata a un metodo di lettura o di scrittura avvia, rispettivamente, la lettura o la scrittura.
Implementazione
public function get position():uint
public function set position(value:uint):void
shareable | proprietà |
shareable:Boolean
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.5, AIR 3.5 |
Specifica se la memoria sottostante dell’array di byte è condivisibile (shareable). Per un array di byte condivisibile (shareable), tutte le istanze ByteArray in tutti i worker che fanno riferimento all’array di byte usano la stessa memoria di sistema sottostante. Il valore predefinito è false
e indica che la memoria sottostante non è condivisa tra i worker.
Questa proprietà determina anche l’operazione che il runtime esegue su questo array di byte se viene passato a un worker con il metodo Worker.setSharedProperty()
o il metodo MessageChannel.send()
:
- Non condivisibile: se questa proprietà è
false
, quando l’array di byte viene passato a un worker il runtime crea una copia completa dell’array di byte, allocando anche un nuovo segmento di memoria nel quale memorizzare il contenuto dell’array di byte duplicato. - Condivisibile: se questa proprietà è
true
, quando l’array di byte viene passato a un worker il runtime usa la stessa memoria sottostante del buffer di memorizzazione sia per il contenuto dell’istanza ByteArray originale che per la nuova istanza ByteArray creata per il secondo worker. In pratica, entrambe le istanze ByteArray contengono un riferimento allo stesso array di byte sottostante.
La possibilità di accedere a un array di byte condiviso da più worker simultaneamente può determinare una situazione indesiderata quando due worker modificano la memoria sottostante dell’array byte contemporaneamente. Potete usare vari meccanismi per controllare l’accesso alla memoria condivisa:
- I meccanismi di confronto e scambio forniti dai metodi
atomicCompareAndSwapIntAt()
eatomicCompareAndSwapLength()
della classe ByteArray - I meccanismi specializzati forniti dalle classi Mutex e Condition (nel pacchetto flash.concurrent)
L’impostazione di questa proprietà su true
ha effetto solo sul codice successivo che passa questo array di byte a un worker. Qualsiasi copia di questo array di byte che è stata già passata a un worker continua a esistere come copia separata.
Se impostate questa proprietà su false
quando in precedenza era true
, la memoria sottostante dell’array di byte viene immediatamente copiata in un nuovo segmento della memoria di sistema. Questa istanza ByteArray usa quindi da quel momento la nuova memoria sottostante. Di conseguenza, la memoria sottostante di questo array di byte non è più condivisa con altri worker, anche se lo era in precedenza. Se successivamente passate questo array di byte a un worker, la sua memoria sottostante viene copiata come per qualsiasi oggetto ByteArray la cui proprietà shareable
è false
.
Il valore predefinito è false.
Implementazione
public function get shareable():Boolean
public function set shareable(value:Boolean):void
Elementi API correlati
ByteArray | () | Funzione di costruzione |
public function ByteArray()
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Crea un'istanza ByteArray che rappresenta un array compresso di byte, in modo che sia possibile utilizzare i metodi e le proprietà della classe per ottimizzare l'archiviazione e il flusso dei dati.
atomicCompareAndSwapIntAt | () | metodo |
public function atomicCompareAndSwapIntAt(byteIndex:int, expectedValue:int, newValue:int):int
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.5, AIR 3.5 |
In una singola operazione atomica, confronta un valore intero di questo array di byte con un altro valore intero e, se coincidono, scambia i relativi byte con un altro valore.
Questo metodo è pensato per essere utilizzato con un array di byte la cui memoria sottostante è condivisa tra più worker (la proprietà shareable
dell’istanza ByteArray è true
). Esegue la seguente sequenza di passaggi:
- Legge un valore intero dall’array di byte a partire dall’indice (misurato in byte) specificato nell’argomento
byteIndex
. - Confronta il valore effettivo di questo array di byte con il valore passato nell’argomento
expectedValue
. - Se i due valori sono uguali, scrive il valore dell’argomento
newValue
nell’array di byte in corrispondenza della posizione specificata dal parametrobyteIndex
e restituisce il valore precedentemente contenuto in quei byte (il valore letto al punto 1). - Altrimenti, il contenuto dell’array di byte non viene cambiato e il metodo restituisce il valore effettivo letto dall’array di byte.
Tutti questi passaggi vengono effettuati in un’unica transazione hardware atomica. In questo modo viene garantito che nessuna operazione eseguita da altri worker modifichi il contenuto dell’array di byte l’operazione di confronto e scambio.
Parametri
byteIndex:int — La posizione di indice (in byte) dalla quale il valore intero da confrontare viene letto e sulla quale il valore newValue viene scritto se il confronto determina valori coincidenti. Questo valore deve essere un multiplo di 4.
| |
expectedValue:int — Il valore atteso che dovrebbe corrispondere al contenuto dell’array di byte nella posizione di indice specificata.
| |
newValue:int — Il nuovo valore che sostituisce il contenuto dell’array di byte nella posizione di indice specificata se il confronto determina valori coincidenti.
|
int — Il valore precedente nella posizione specificata, se il confronto determina valori coincidenti, oppure il valore effettivo dell’array di byte, se il valore effettivo e il valore atteso non corrispondono.
|
Genera
ArgumentError — Se il valore byteIndex non è un multiplo di 4 oppure se è negativo.
|
Elementi API correlati
atomicCompareAndSwapLength | () | metodo |
public function atomicCompareAndSwapLength(expectedLength:int, newLength:int):int
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11.5, AIR 3.5 |
In una singola operazione atomica, confronta la lunghezza di questo array di byte con un valore specificato e, se i due valori coincidono, modifica la lunghezza di questo array di byte.
Questo metodo è pensato per essere utilizzato con un array di byte la cui memoria sottostante è condivisa tra più worker (la proprietà shareable
dell’istanza ByteArray è true
). Esegue le seguenti operazioni:
- Legge la proprietà
length
(valore intero) dell’istanza ByteArray. - Confronta la lunghezza con il valore passato nell’argomento
expectedLength
. - Se i due valori sono uguali, cambia la lunghezza dell’array di byte con il valore passato nel parametro
newLength
, aumentando o riducendo la dimensione dell’array di byte. - In caso contrario, l’array di byte rimane invariato.
Tutti questi passaggi vengono effettuati in un’unica transazione hardware atomica. In questo modo viene garantito che nessuna operazione eseguita da altri worker modifichi il contenuto dell’array di byte l’operazione di confronto e ridimensionamento.
Parametri
expectedLength:int — Il valore atteso della proprietà length del ByteArray. Se il valore specificato e il valore effettivo corrispondono, la lunghezza dell’array di byte viene modificata.
| |
newLength:int — Il nuovo valore di lunghezza dell’array di byte se il confronto ha esito positivo.
|
int — Il valore length precedente del ByteArray, indipendentemente dal fatto che sia cambiato o meno.
|
Elementi API correlati
clear | () | metodo |
public function clear():void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Cancella il contenuto dell'array di byte e reimposta le proprietà length
e position
su 0. Chiamando questo metodo, si libera in modo esplicito la memoria utilizzata dall'istanza ByteArray.
compress | () | metodo |
public function compress(algorithm:String):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9 |
Comprime l'array di byte. Viene compresso l'intero array. Dopo la chiamata, viene impostata una nuova lunghezza della proprietà length
del ByteArray. La proprietà position
viene impostata alla fine dell'array di byte.
Specificate un algoritmo di compressione passando un valore (definito nella classe CompressionAlgorithm) come parametro algorithm
. Gli algoritmi supportati sono i seguenti:
È possibile leggere la descrizione del formato di dati compresso zlib alle pagine e http://www.ietf.org/rfc/rfc1950.txt.
L'algoritmo di compressione deflate è descritto all'indirizzo http://www.ietf.org/rfc/rfc1951.txt.
L’algoritmo di compressione lzma è descritto qui: http://www.7-zip.org/7z.html.
L'algoritmo di compressione deflate viene utilizzato per diversi formati di compressione, quali zlib, gzip, alcune implementazioni di zip e altri ancora. Quando i dati vengono compressi utilizzando uno di questi formati di compressione, oltre a memorizzare la versione compressa dei dati originali, i dati del formato di compressione (ad esempio, il file .zip) includono anche informazioni sui metadati. Alcuni esempi dei tipi di metadati inclusi in vari formati file sono nome del file, data/ora di modifica del file, dimensione del file originale, commenti opzionali, dati di checksum e altro ancora.
Ad esempio, quando ByteArray viene compresso mediante l'algoritmo zlib, l'oggetto ByteArray risultante viene strutturato in un formato specifico. Alcuni byte contengono metadati sui dati compressi, mentre altri byte contengono l'effettiva versione compressa dei dati ByteArray originali. Come definito dalla specifica del formato dei dati compressi zlib, tali byte (vale a dire, la parte contenente la versione compressa dei dati originali) vengono compressi mediante l'algoritmo deflate. Di conseguenza, tali byte sono identici al risultato della chiamata a compress(air.CompressionAlgorithm.DEFLATE)
sul ByteArray originale. Tuttavia, il risultato di compress(air.(CompressionAlgorithm.ZLIB)
include i metadati extra, mentre il risultato di compress(CompressionAlgorithm.DEFLATE)
include solo la versione compressa dei dati di ByteArray originali e niente altro.
Per utilizzare il formato deflate per comprimere i dati di un'istanza di ByteArray in un formato specifico, quale gzip o zip, non è sufficiente chiamare compress( CompressionAlgorithm.DEFLATE)
. Dovete invece creare un oggetto ByteArray strutturato in base alla specifica del formato di compressione, che includa i metadati appropriati, così come i dati compressi ottenuti utilizzando il formato deflate. Analogamente, per decodificare dati compressi in un formato quale gzip o zip, non è sufficiente chiamare uncompress(CompressionAlgorithm.DEFLATE)
su tali dati. In primo luogo, dovete separare i metadati dai dati compressi, quindi potete usare il formato deflate per decomprimere i dati compressi.
Parametri
algorithm:String (default = NaN ) — L'algoritmo di compressione da usare durante la compressione. I valori validi sono definiti come costanti nella classe CompressionAlgorithm. L'impostazione predefinita prevede l'uso del formato zlib. La chiamata di compress( CompressionAlgorithm.DEFLATE) produce gli stessi risultati della chiamata del metodo deflate() . Il supporto per l’algoritmo lzma è stato aggiunto per Flash Player 11.3 e AIR 3.3. Per utilizzare la compressione lzma dovete avere queste versioni dei lettori, o versioni successive.
|
Elementi API correlati
deflate | () | metodo |
public function deflate():void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Comprime l'array di byte utilizzando l'algoritmo di compressione deflate. Viene compresso l'intero array.
Dopo la chiamata, viene impostata una nuova lunghezza della proprietà length
del ByteArray. La proprietà position
viene impostata alla fine dell'array di byte.
L'algoritmo di compressione deflate è descritto all'indirizzo http://www.ietf.org/rfc/rfc1951.txt.
Per utilizzare il formato deflate per comprimere i dati di un'istanza di ByteArray in un formato specifico, quale gzip o zip, non è sufficiente chiamare il metodo deflate()
. Dovete invece creare un oggetto ByteArray strutturato in base alla specifica del formato di compressione, che includa i metadati appropriati, così come i dati compressi ottenuti utilizzando il formato deflate. Analogamente, per decodificare dati compressi in un formato quale gzip o zip, non è sufficiente chiamare inflate()
su tali dati. In primo luogo, dovete separare i metadati dai dati compressi, quindi potete usare il formato deflate per decomprimere i dati compressi.
Elementi API correlati
inflate | () | metodo |
public function inflate():void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 10 |
Decomprime l'array di byte utilizzando l'algoritmo di compressione deflate. L'array di byte deve essere stato compresso mediante lo stesso algoritmo.
Dopo la chiamata, viene impostata una nuova lunghezza della proprietà length
del ByteArray. La proprietà position
viene impostata su 0.
L'algoritmo di compressione deflate è descritto all'indirizzo http://www.ietf.org/rfc/rfc1951.txt.
Per decodificare dati compressi in un formato che impiega l'algoritmo di compressione deflate, quali dati in formato gzip o zip, non è sufficiente chiamare il metodo inflate()
su un ByteArray contenente i dati nel formato di compressione. In primo luogo, dovete separare i metadati inclusi come parte del formato dati compresso dagli effettivi dati compressi. Per maggiori informazioni, vedete la descrizione del metodo compress()
.
Genera
IOError — I dati non sono dati compressi validi; non sono stati compressi con lo stesso algoritmo utilizzato per la compressione.
|
Elementi API correlati
readBoolean | () | metodo |
public function readBoolean():Boolean
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un valore booleano dal flusso di byte. Viene letto un singolo byte e viene restituito true
se il byte è diverso da zero oppure false
in caso contrario.
Boolean — Restituisce true se il byte è diverso da zero; false in caso contrario.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readByte | () | metodo |
public function readByte():int
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un byte con segno dal flusso di byte.
Il valore restituito è compreso nell'intervallo da -128 a 127.
Restituisceint — Un numero intero compreso tra -128 e 127.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readBytes | () | metodo |
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge il numero di byte di dati, specificato dal parametro length
, dal flusso di byte. I byte vengono letti dall'oggetto ByteArray specificato dal parametro bytes
e poi scritti nel ByteArray di destinazione a partire dalla posizione specificata dall'offset
.
Parametri
bytes:ByteArray — L'oggetto ByteArray in cui leggere i dati.
| |
offset:uint (default = 0 ) — L'offset (posizione) in byte in corrispondenza del quale devono essere scritti i dati letti.
| |
length:uint (default = 0 ) — Il numero di byte da leggere. Il valore predefinito 0 avvia la lettura di tutti i dati disponibili.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
| |
RangeError — Il valore combinato corrispondente all'offset e alla lunghezza forniti è maggiore del valore massimo per un uint.
|
Altri esempi
readDouble | () | metodo |
public function readDouble():Number
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un numero a virgola mobile IEEE 754 a precisione doppia (64 bit) dal flusso di byte.
RestituisceNumber — Un numero a virgola mobile a precisione doppia (64 bit).
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readFloat | () | metodo |
public function readFloat():Number
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un numero a virgola mobile IEEE 754 a precisione singola (32 bit) dal flusso di byte.
RestituisceNumber — Un numero a virgola mobile a precisione singola (32 bit).
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readInt | () | metodo |
public function readInt():int
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un numero intero con segno a 32 bit dal flusso di byte.
Il valore restituito è compreso nell'intervallo da -2147483648 a 2147483647.
Restituisceint — Un numero intero con segno a 32 bit, compreso tra -2147483648 e 2147483647.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readMultiByte | () | metodo |
public function readMultiByte(length:uint, charSet:String):String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge una stringa multibyte della lunghezza specificata dal flusso di byte, utilizzando il set di caratteri specificato.
Parametri
length:uint — Il numero di byte dal flusso di byte da leggere.
| |
charSet:String — La stringa che indica il set di caratteri da utilizzare per interpretare i byte. Le stringhe dei set di caratteri possono essere "shift-jis" , "cn-gb" , "iso-8859-1" e altre. Per un elenco completo, vedete Set di caratteri supportati.
Nota: se il valore del parametro |
String — Stringa con codifica UTF-8.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readObject | () | metodo |
public function readObject():*
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un oggetto dall'array di byte, codificato nel formato serializzato AMF.
Restituisce* — L'oggetto deserializzato.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
Elementi API correlati
readShort | () | metodo |
public function readShort():int
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un numero intero con segno a 16 bit dal flusso di byte.
Il valore restituito è compreso nell'intervallo da -32768 a 32767.
Restituisceint — Un numero intero con segno a 16 bit, compreso tra -32768 e 32767.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readUnsignedByte | () | metodo |
public function readUnsignedByte():uint
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un byte senza segno dal flusso di byte.
Il valore restituito è compreso nell'intervallo da 0 a 255.
Restituisceuint — Un numero intero senza segno a 32 bit, compreso tra 0 e 255.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readUnsignedInt | () | metodo |
public function readUnsignedInt():uint
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un numero intero senza segno a 32 bit dal flusso di byte.
Il valore restituito è compreso nell'intervallo da 0 a 4294967295.
Restituisceuint — Un numero intero senza segno a 32 bit, compreso tra 0 e 4294967295.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readUnsignedShort | () | metodo |
public function readUnsignedShort():uint
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge un numero intero senza segno a 16 bit dal flusso di byte.
Il valore restituito è compreso nell'intervallo da 0 a 65535.
Restituisceuint — Un numero intero senza segno a 16 bit, compreso tra 0 e 65535.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
readUTF | () | metodo |
public function readUTF():String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge una stringa UTF-8 dal flusso di byte. Si presume che la stringa abbia come prefisso una dichiarazione unsigned short, che indica la lunghezza in byte.
RestituisceString — Stringa con codifica UTF-8.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
Elementi API correlati
readUTFBytes | () | metodo |
public function readUTFBytes(length:uint):String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Legge una sequenza di byte UTF-8 specificata dal parametro length
dal flusso di byte e restituisce una stringa.
Parametri
length:uint — Una dichiarazione unsigned short che indica la lunghezza dei byte UTF-8.
|
String — Una stringa composta dai byte UTF-8 della lunghezza specificata.
|
Genera
EOFError — I dati disponibili non sono sufficienti per la lettura.
|
toJSON | () | metodo |
public function toJSON(k:String):*
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 11, AIR 3, Flash Lite 4 |
Fornisce un metodo sostituibile per personalizzare la codifica JSON dei valori in un oggetto ByteArray.
Il metodo JSON.stringify()
cerca un metodo toJSON()
in ogni oggetto che ricerca. Se il metodo toJSON()
viene rilevato, JSON.stringify()
lo chiama per ogni valore che incontra, trasmettendo la chiave accoppiata al valore.
ByteArray fornisce un'implementazione predefinita di toJSON()
che restituisce semplicemente il nome della classe. Poiché il contenuto di ciascun ByteArray richiede un'interpretazione, i clienti che desiderano esportare oggetti ByteArray in JSON devono fornire una loro implementazione. Potete eseguire questa operazione ridefinendo il metodo toJSON()
sul prototipo della classe.
Il metodo toJSON()
è in grado di restituire qualsiasi tipo di valore. Se viene restituito un oggetto, stringify()
esegue la ricorsione all'interno di tale oggetto. Se toJSON()
restituisce una stringa, stringify()
non esegue alcuna ricorsione e continua la ricerca.
Parametri
k:String — La chiave di una coppia chiave/valore che JSON.stringify() ha incontrato durante la ricerca di questo oggetto.
|
* — La stringa del nome della classe.
|
Altre informazioni
Elementi API correlati
toString | () | metodo |
public function toString():String
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Converte l'array di byte in una stringa. Se i dati nell'array iniziano con un BOM Unicode, l'applicazione rispetta questo contrassegno durante la conversione in stringa. Se System.useCodePage
è impostato su true
, i dati dell'array vengono considerati parte della tabella codici del sistema corrente durante la conversione.
String — La rappresentazione in stringa dell'array di byte.
|
uncompress | () | metodo |
public function uncompress(algorithm:String):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Decomprime l'array di byte.
Dopo la chiamata, viene impostata una nuova lunghezza della proprietà length
del ByteArray. La proprietà position
viene impostata su 0.
L’array di byte deve essere stato compresso mediante lo stesso algoritmo usato per la decompressione. Specificate un algoritmo di decompressione passando un valore (definito nella classe CompressionAlgorithm) come parametro algorithm
. Gli algoritmi supportati sono i seguenti:
È possibile leggere la descrizione del formato di dati compresso zlib alle pagine e http://www.ietf.org/rfc/rfc1950.txt.
L'algoritmo di compressione deflate è descritto all'indirizzo http://www.ietf.org/rfc/rfc1951.txt.
L’algoritmo di compressione lzma è descritto qui: http://www.7-zip.org/7z.html.
Per decodificare dati compressi in un formato che impiega l'algoritmo di compressione deflate, quali dati in formato gzip o zip, non è possibile chiamare uncompress(CompressionAlgorithm.DEFLATE)
su un oggetto ByteArray contenente i dati nel formato di compressione. In primo luogo, dovete separare i metadati inclusi come parte del formato dati compresso dagli effettivi dati compressi. Per maggiori informazioni, vedete la descrizione del metodo compress()
.
Parametri
algorithm:String (default = NaN ) — L'algoritmo di compressione da usare durante la decompressione. Deve trattarsi dello stesso algoritmo di compressione utilizzato per comprimere i dati. I valori validi sono definiti come costanti nella classe CompressionAlgorithm. L'impostazione predefinita prevede l'uso del formato zlib. Il supporto per l’algoritmo lzma è stato aggiunto per Flash Player 11.3 e AIR 3.3. Per utilizzare la compressione lzma dovete avere queste versioni dei lettori, o versioni successive.
|
Genera
IOError — I dati non sono dati compressi validi; non sono stati compressi con lo stesso algoritmo utilizzato per la compressione.
|
Elementi API correlati
writeBoolean | () | metodo |
public function writeBoolean(value:Boolean):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive un valore booleano. Viene scritto un singolo byte a seconda del parametro value
: 1 se true
oppure 0 se false
.
Parametri
value:Boolean — Un valore booleano che determina il byte da scrivere. Se il parametro è true , il metodo scrive 1; se è false , scrive 0.
|
writeByte | () | metodo |
public function writeByte(value:int):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive un byte nel flusso di byte.
Vengono utilizzati i 8 bit bassi del parametro. I 24 bit alti vengono ignorati.
Parametri
value:int — Numero intero a 32 bit. Gli 8 bit bassi vengono scritti nel flusso di byte.
|
writeBytes | () | metodo |
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive una sequenza di byte length
dall'array di byte specificato, bytes
, a partire dal numero di byte offset
(numero intero a base zero) nel flusso di byte.
Se il parametro length
viene omesso, viene utilizzata la lunghezza predefinita 0 e il metodo scrive l'intero buffer partendo da offset
. Se viene omesso anche il parametro offset
, viene scritto l'intero buffer.
Se offset
o length
è fuori intervallo, viene fissato all'inizio e alla fine dell'array bytes
.
Parametri
bytes:ByteArray — L'oggetto ByteArray.
| |
offset:uint (default = 0 ) — Un numero intero a base zero, che indica la posizione dell'array da cui viene avviata la scrittura.
| |
length:uint (default = 0 ) — Un numero intero senza segno, che indica fin dove scrivere nel buffer.
|
Altri esempi
writeDouble | () | metodo |
public function writeDouble(value:Number):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive un numero a virgola mobile IEEE 754 a precisione doppia (64 bit) nel flusso di byte.
Parametri
value:Number — Un numero a virgola mobile a precisione doppia (64 bit).
|
writeFloat | () | metodo |
public function writeFloat(value:Number):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive un numero a virgola mobile IEEE 754 a precisione singola (32 bit) nel flusso di byte.
Parametri
value:Number — Un numero a virgola mobile a precisione singola (32 bit).
|
writeInt | () | metodo |
writeMultiByte | () | metodo |
public function writeMultiByte(value:String, charSet:String):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive una stringa multibyte in un flusso di byte utilizzando il set di caratteri specificato.
Parametri
value:String — Il valore stringa da scrivere.
| |
charSet:String — La stringa che indica il set di caratteri da utilizzare. Le stringhe dei set di caratteri possono essere "shift-jis" , "cn-gb" , "iso-8859-1" e altre. Per un elenco completo, vedete Set di caratteri supportati.
|
writeObject | () | metodo |
writeShort | () | metodo |
public function writeShort(value:int):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive un numero intero a 16 bit nel flusso di byte. Vengono utilizzati i 16 bit bassi del parametro. I 16 bit alti vengono ignorati.
Parametri
value:int — Numero intero a 32 bit, i cui 16 bit bassi vengono scritti nel flusso di byte.
|
writeUnsignedInt | () | metodo |
writeUTF | () | metodo |
public function writeUTF(value:String):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive una stringa UTF-8 nel flusso di byte. La lunghezza della stringa UTF-8 in byte viene scritta per prima, come numero intero a 16 bit, seguita dai byte che rappresentano i caratteri della stringa.
Parametri
value:String — Il valore stringa da scrivere.
|
Genera
RangeError — La lunghezza supera 65535.
|
writeUTFBytes | () | metodo |
public function writeUTFBytes(value:String):void
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Scrive una stringa UTF-8 nel flusso di byte. È simile al metodo writeUTF()
, ma writeUTFBytes()
non inserisce come prefisso alla stringa una parola di 16 bit.
Parametri
value:String — Il valore stringa da scrivere.
|
ByteArrayExample
per scrivere un valore booleano e la rappresentazione di pi a virgola mobile e a precisione doppia in un array di byte. Questa operazione viene eseguita mediante la procedura seguente:
- Dichiarate una nuova istanza dell'oggetto ByteArray
byteArr
. - Scrivete l'equivalente in byte del valore booleano
false
, quindi verificarne la lunghezza ed eseguirne la lettura. - Scrivete l'equivalente a virgola mobile e precisione doppia del valore matematico di pi.
- Leggere ognuno dei nove byte scritti nell'array di byte.
Nota: quando trace()
viene chiamato su un byte, viene stampato l'equivalente decimale dei byte memorizzati nell'array di byte.
Notate che alla fine viene aggiunto un segmento di codice per verificare la presenza di errori di fine del file e assicurare che il flusso di byte non venga letto oltre il suo punto finale.
package { import flash.display.Sprite; import flash.utils.ByteArray; import flash.errors.EOFError; public class ByteArrayExample extends Sprite { public function ByteArrayExample() { var byteArr:ByteArray = new ByteArray(); byteArr.writeBoolean(false); trace(byteArr.length); // 1 trace(byteArr[0]); // 0 byteArr.writeDouble(Math.PI); trace(byteArr.length); // 9 trace(byteArr[0]); // 0 trace(byteArr[1]); // 64 trace(byteArr[2]); // 9 trace(byteArr[3]); // 33 trace(byteArr[4]); // 251 trace(byteArr[5]); // 84 trace(byteArr[6]); // 68 trace(byteArr[7]); // 45 trace(byteArr[8]); // 24 byteArr.position = 0; try { trace(byteArr.readBoolean() == false); // true } catch(e:EOFError) { trace(e); // EOFError: Error #2030: End of file was encountered. } try { trace(byteArr.readDouble()); // 3.141592653589793 } catch(e:EOFError) { trace(e); // EOFError: Error #2030: End of file was encountered. } try { trace(byteArr.readDouble()); } catch(e:EOFError) { trace(e); // EOFError: Error #2030: End of file was encountered. } } } }
Tue Jun 12 2018, 02:44 PM Z