패키지 | flash.utils |
클래스 | public class ByteArray |
상속 | ByteArray Object |
구현 | IDataInput, IDataOutput |
하위 클래스 | ByteArrayAsset |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
참고: ByteArray 클래스는 데이터에 바이트 수준으로 액세스해야 하는 고급 개발자를 위한 것입니다.
메모리 내 데이터는 압축된 바이트 배열(데이터 유형에 대한 가장 압축된 표현)이지만 표준 []
(array access) 연산자를 사용하여 ByteArray 클래스의 인스턴스를 조작할 수 있습니다. URLStream 및 Socket 클래스의 메서드와 비슷한 메서드를 사용하여 이러한 인스턴스를 메모리 내 파일로 읽고 쓸 수도 있습니다.
또한 AMF(Action Message Format) 객체 직렬화를 비롯하여 zlib, deflate 및 lzma 압축 및 압축 해제가 지원됩니다.
ByteArray 객체는 shareable
속성을 true
로 설정하여 해당 지원 메모리를 여러 워커 인스턴스 간에 공유할 수 있습니다.
ByteArray 클래스는 다음과 같은 용도로 사용할 수 있습니다.
- 서버에 연결하기 위한 사용자 정의 프로토콜을 만듭니다.
- URLEncoder/URLDecoder를 직접 작성합니다.
- AMF/Remoting 패킷을 직접 작성합니다.
- 데이터 유형을 사용하여 데이터의 크기를 최적화합니다.
- 파일에서 로드된 이진 데이터를 사용하여 작업합니다.
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
bytesAvailable : uint [읽기 전용]
바이트 배열의 현재 위치에서 배열 끝까지 읽을 수 있는 데이터 바이트 수입니다. | ByteArray | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
defaultObjectEncoding : uint [정적]
새 ByteArray 인스턴스에 사용할 ByteArray 클래스의 기본 객체 인코딩을 나타냅니다. | ByteArray | ||
endian : String
데이터의 바이트 순서를 Endian.BIG_ENDIAN 또는 Endian.LITTLE_ENDIAN으로 변경하거나 읽습니다. | ByteArray | ||
length : uint
ByteArray 객체의 바이트 단위 길이입니다. | ByteArray | ||
objectEncoding : uint
ByteArray 인스턴스에서 쓰거나 읽을 때 ActionScript 3.0, ActionScript 2.0, ActionScript 1.0 중 어떤 형식을 사용해야 하는지를 결정하는 데 사용됩니다. | ByteArray | ||
position : uint
ByteArray 객체에 대한 파일 포인터의 현재 위치를 바이트 단위로 옮기거나 반환합니다. | ByteArray | ||
shareable : Boolean
바이트 배열의 기본 메모리를 공유할 수 있는지 여부를 지정합니다. | ByteArray |
메서드 | 정의 주체 | ||
---|---|---|---|
이 클래스의 메서드와 속성을 사용하여 데이터 저장소 및 스트림을 최적화할 수 있도록 압축된 바이트 배열을 나타내는 ByteArray 인스턴스를 만듭니다. | ByteArray | ||
단일 아톰 작업에서는 이 바이트 배열의 정수 값을 다른 정수 값과 비교하고, 두 값이 일치하는 경우 이러한 바이트를 다른 값과 바꿉니다. | ByteArray | ||
단일 아톰 작업에서 이 바이트 배열의 길이와 제공된 값을 비교하고, 일치하는 경우 이 바이트 배열의 길이를 변경합니다. | ByteArray | ||
바이트 배열의 내용을 지우고 길이 및 위치 속성을 0으로 재설정합니다. | ByteArray | ||
바이트 배열을 압축합니다. | ByteArray | ||
deflate 압축 알고리즘을 사용하여 바이트 배열을 압축합니다. | ByteArray | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
deflate 압축 알고리즘을 사용하여 바이트 배열의 압축을 해제합니다. | ByteArray | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
바이트 스트림에서 부울 값을 읽습니다. | ByteArray | ||
바이트 스트림에서 부호 있는 바이트를 읽습니다. | ByteArray | ||
바이트 스트림에서 length 매개 변수로 지정된 데이터 바이트 수를 읽습니다. | ByteArray | ||
바이트 스트림에서 IEEE 754 배정밀도 64비트 부동 소수점 숫자를 읽습니다. | ByteArray | ||
바이트 스트림에서 IEEE 754 단정밀도 32비트 부동 소수점 숫자를 읽습니다. | ByteArray | ||
바이트 스트림에서 부호 있는 32비트 정수를 읽습니다. | ByteArray | ||
지정된 문자 세트를 사용하여 바이트 스트림에서 지정된 길이의 멀티바이트 문자열을 읽습니다. | ByteArray | ||
readObject():*
바이트 배열에서 AMF 직렬 형식으로 인코딩된 객체를 읽습니다. | ByteArray | ||
바이트 스트림에서 부호 있는 16비트 정수를 읽습니다. | ByteArray | ||
바이트 스트림에서 부호 없는 바이트를 읽습니다. | ByteArray | ||
바이트 스트림에서 부호 없는 32비트 정수를 읽습니다. | ByteArray | ||
바이트 스트림에서 부호 없는 16비트 정수를 읽습니다. | ByteArray | ||
바이트 스트림에서 UTF-8 문자열을 읽습니다. | ByteArray | ||
바이트 스트림에서 length 매개 변수에 지정된 길이의 UTF-8 바이트 시퀀스를 읽고 문자열을 반환합니다. | ByteArray | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
ByteArray 객체의 JSON 인코딩 값을 사용자 정의할 수 있도록 재정의 가능한 메서드를 제공합니다. | ByteArray | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
바이트 배열을 문자열로 변환합니다. | ByteArray | ||
바이트 배열의 압축을 해제합니다. | ByteArray | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
부울 값을 씁니다. | ByteArray | ||
바이트 스트림에 바이트를 씁니다. | ByteArray | ||
지정된 바이트 배열 bytes에서 offset(0부터 시작하는 인덱스)부터 시작하여 length만큼의 바이트 시퀀스를 데이터 스트림에 씁니다. | ByteArray | ||
바이트 스트림에 IEEE 754 배정밀도 64비트 부동 소수점 숫자를 씁니다. | ByteArray | ||
바이트 스트림에 IEEE 754 단정밀도 32비트 부동 소수점 숫자를 씁니다. | ByteArray | ||
바이트 스트림에 부호 있는 32비트 정수를 씁니다. | ByteArray | ||
지정된 문자 세트를 사용하여 멀티바이트 문자열을 바이트 스트림에 씁니다. | ByteArray | ||
객체를 바이트 배열에 AMF 직렬 형식으로 씁니다. | ByteArray | ||
바이트 스트림에 16비트 정수를 씁니다. | ByteArray | ||
바이트 스트림에 부호 없는 32비트 정수를 씁니다. | ByteArray | ||
UTF-8 문자열을 바이트 스트림에 씁니다. | ByteArray | ||
UTF-8 문자열을 바이트 스트림에 씁니다. | ByteArray |
bytesAvailable | 속성 |
defaultObjectEncoding | 속성 |
defaultObjectEncoding:uint
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
새 ByteArray 인스턴스에 사용할 ByteArray 클래스의 기본 객체 인코딩을 나타냅니다. 새 ByteArray 인스턴스를 만드는 경우 이 인스턴스에 대한 인코딩은 defaultObjectEncoding
의 값으로 시작합니다. defaultObjectEncoding
속성은 ObjectEncoding.AMF3
으로 초기화됩니다.
이진 데이터에서 객체를 읽거나 쓸 때 objectEncoding
값을 통해 ActionScript 3.0, ActionScript2.0 또는 ActionScript 1.0 형식 중 어떤 형식을 사용할지 결정됩니다. 값은 ObjectEncoding 클래스의 상수입니다.
구현
public static function get defaultObjectEncoding():uint
public static function set defaultObjectEncoding(value:uint):void
관련 API 요소
endian | 속성 |
length | 속성 |
objectEncoding | 속성 |
objectEncoding:uint
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
ByteArray 인스턴스에서 쓰거나 읽을 때 ActionScript 3.0, ActionScript 2.0, ActionScript 1.0 중 어떤 형식을 사용해야 하는지를 결정하는 데 사용됩니다. 값은 ObjectEncoding 클래스의 상수입니다.
구현
public function get objectEncoding():uint
public function set objectEncoding(value:uint):void
관련 API 요소
position | 속성 |
shareable | 속성 |
shareable:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.5, AIR 3.5 |
바이트 배열의 기본 메모리를 공유할 수 있는지 여부를 지정합니다. 공유 가능한 바이트 배열의 경우 해당 바이트 배열을 참조하는 모든 워커의 모든 ByteArray 인스턴스는 동일한 기본 시스템 메모리를 사용합니다. 기본값은 false
로, 기본 메모리가 워커 간에 공유되지 않음을 나타냅니다.
이 속성은 Worker.setSharedProperty()
메서드 또는 MessageChannel.send()
메서드를 사용하여 워커로 전달된 경우 런타임이 이 바이트 배열로 수행하는 작업에 영향을 미칩니다.
- Not shareable: 이 속성이
false
인 상태에서 바이트 배열이 워커로 전달되면 런타임은 해당 바이트 배열의 전체 복사본을 생성하는 것을 비롯해 중복된 바이트 배열의 내용을 저장할 메모리의 새 세그먼트를 할당합니다. - Shareable: 이 속성이
true
인 상태에서 바이트 배열이 워커로 전달되면 런타임은 원본 ByteArray 인스턴스와 두 번째 워커에 대해 새로 생성된 ByteArray 인스턴스 모두의 내용에 대한 스토리지 버퍼와 동일한 기본 메모리를 사용합니다. 본질적으로 두 ByteArray 인스턴스에는 모두 동일한 기본 바이트 배열에 대한 참조가 들어 있습니다.
여러 워커에서 동시에 공유 바이트 배열에 액세스할 수 있으면 두 워커가 모두 바이트 배열의 기본 메모리를 동시에 조작하는 바람직하지 않은 상황이 발생할 수 있습니다. 다음과 같은 여러 가지 메커니즘을 통해 공유 메모리에 대한 액세스를 제어할 수 있습니다.
- ByteArray 클래스의
atomicCompareAndSwapIntAt()
및atomicCompareAndSwapLength()
메서드를 통해 제공되는 비교 및 교체 메커니즘 - Mutex 및 Condition 클래스(flash.concurrent 패키지)를 통해 제공되는 특수 메커니즘
이 속성을 true
로 설정하면 이 바이트 배열을 워커로 전달하는 후속 코드에만 영향을 미칩니다. 이미 워커로 전달된 이 바이트 배열의 복사본은 계속해서 별도의 복사본으로 존재합니다.
이전에 true
였던 이 속성을 false
로 설정하면 바이트 배열의 기본 메모리가 즉시 시스템 메모리의 새 세그먼트로 복사됩니다. 그러면 이 ByteArray 인스턴스에서는 이 시점부터 새 기본 메모리를 사용합니다. 결과적으로 이 바이트 배열의 기본 메모리는 이전에 공유되었더라도 더 이상 다른 워커와 공유되지 않습니다. 이후에 이 바이트 배열을 워커로 전달하는 경우 shareable
속성이 false
인 ByteArray 객체와 마찬가지로 해당 기본 메모리가 복사됩니다.
기본값: false.
구현
public function get shareable():Boolean
public function set shareable(value:Boolean):void
관련 API 요소
ByteArray | () | 생성자 |
public function ByteArray()
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이 클래스의 메서드와 속성을 사용하여 데이터 저장소 및 스트림을 최적화할 수 있도록 압축된 바이트 배열을 나타내는 ByteArray 인스턴스를 만듭니다.
atomicCompareAndSwapIntAt | () | 메서드 |
public function atomicCompareAndSwapIntAt(byteIndex:int, expectedValue:int, newValue:int):int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.5, AIR 3.5 |
단일 아톰 작업에서는 이 바이트 배열의 정수 값을 다른 정수 값과 비교하고, 두 값이 일치하는 경우 이러한 바이트를 다른 값과 바꿉니다.
이 메서드는 기본 메모리가 여러 워커 간에 공유되는 바이트 배열(ByteArray 인스턴스의 공유 가능
속성이 true
임)에 사용하기 위한 것입니다. 또한 다음과 같은 순서의 단계를 실행합니다.
byteIndex
인수에 지정된 색인(바이트 단위로 측정)부터 이 바이트 배열의 정수 값을 읽습니다.expectedValue
인수에 전달된 값과 이 바이트 배열의 실제 값을 비교합니다.- 두 값이 같으면
newValue
인수의 값을byteIndex
매개 변수에 의해 지정된 위치의 바이트 배열에 쓰고, 이러한 바이트에 이전에 포함되어 있던 값(1단계에서 읽은 값)을 반환합니다. - 두 값이 다르면 바이트 배열의 내용이 변경되지 않고, 이 메서드는 바이트 배열에서 읽은 실제 값을 반환합니다.
이러한 단계는 모두 하나의 아톰 하드웨어 트랜잭션에서 수행됩니다. 따라서 비교 및 교체 작업 도중 다른 워커의 작업으로 인해 바이트 배열의 내용이 변경되지 않습니다.
매개 변수
byteIndex:int — 비교할 정수를 읽을 원본 색인 위치(바이트 단위)이고, 비교 결과가 일치하는 경우 newValue 값을 쓰는 대상 색인 위치입니다. 이 값은 4의 배수여야 합니다.
| |
expectedValue:int — 지정된 색인의 바이트 배열 내용과 일치할 것으로 예상되는 값입니다.
| |
newValue:int — 비교 결과가 일치하는 경우 지정된 색인의 바이트 배열 내용을 대체하는 새 값입니다.
|
int — 비교 결과 일치하는 경우 지정된 위치의 이전 갑이거나, 실제 값과 예상 값이 일치하지 않는 경우 바이트 배열의 실제 값입니다.
|
오류
ArgumentError — byteIndex 값이 4의 배수가 아니거나 음수인 경우입니다.
|
관련 API 요소
atomicCompareAndSwapLength | () | 메서드 |
public function atomicCompareAndSwapLength(expectedLength:int, newLength:int):int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11.5, AIR 3.5 |
단일 아톰 작업에서 이 바이트 배열의 길이와 제공된 값을 비교하고, 일치하는 경우 이 바이트 배열의 길이를 변경합니다.
이 메서드는 기본 메모리가 여러 워커 간에 공유되는 바이트 배열(ByteArray 인스턴스의 공유 가능
속성이 true
임)에 사용하기 위한 것입니다. 특히, 다음을 수행합니다.
- ByteArray 인스턴스의 정수
length
속성을 읽습니다. expectedLength
인수에 전달된 값과 길이를 비교합니다.- 두 값이 같으면 바이트 배열의 길이를
newLength
매개 변수로 전달된 값으로 변경하여 바이트 배열의 크기를 늘리거나 줄입니다. - 두 값이 다르면 바이트 배열이 변경되지 않습니다.
이러한 단계는 모두 하나의 아톰 하드웨어 트랜잭션에서 수행됩니다. 따라서 비교 및 크기 조정 작업 도중 다른 워커의 작업으로 인해 바이트 배열의 내용이 변경되지 않습니다.
매개 변수
expectedLength:int — ByteArray length 속성의 예상 값입니다. 지정된 값과 실제 값이 일치하는 경우 바이트 배열의 길이가 변경됩니다.
| |
newLength:int — 비교에 성공하는 경우 바이트 배열의 새 길이 값입니다.
|
int — 변경 여부와 관계없이 ByteArray의 이전 length 값입니다.
|
관련 API 요소
clear | () | 메서드 |
public function clear():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
바이트 배열의 내용을 지우고 length
및 position
속성을 0으로 재설정합니다. 이 메서드를 호출하면 ByteArray 인스턴스에 사용되던 메모리가 명시적으로 비워집니다.
compress | () | 메서드 |
public function compress(algorithm:String):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
바이트 배열을 압축합니다. 전체 바이트 배열이 압축됩니다. 호출 후에 ByteArray의 length
속성이 새로 설정됩니다. position
속성이 바이트 배열의 끝으로 설정됩니다.
압축 알고리즘을 지정하려면 CompressionAlgorithm 클래스에 정의된 값을 algorithm
매개 변수로 전달합니다. 지원되는 알고리즘은 다음과 같습니다.
zlib 압축 데이터 형식에 대한 설명은 http://www.ietf.org/rfc/rfc1950.txt를 참조하십시오.
deflate 압축 알고리즘에 대한 설명은 http://www.ietf.org/rfc/rfc1951.txt를 참조하십시오.
lzma 압축 알고리즘은 http://www.7-zip.org/7z.html에 설명되어 있습니다.
deflate 압축 알고리즘은 zlib, gzip, 일부 zip 구현 등의 여러 압축 형식에 사용됩니다. 이러한 압축 형식 중 하나를 사용하여 데이터를 압축하면 원래 데이터의 압축 버전을 저장할 수 있을 뿐 아니라 압축 형식 데이터(예: .zip 파일)에 메타데이터 정보가 포함됩니다. 다양한 파일 형식에 포함되는 메타데이터 유형의 예에는 파일 이름, 파일 수정 날짜/시간, 원래 파일 크기, 선택적 주석, 체크섬 데이터 등이 있습니다.
예를 들어 zlib 알고리즘을 사용하여 ByteArray를 압축하면 결과 ByteArray가 지정된 형식으로 구성됩니다. 어떤 바이트에는 압축 데이터에 대한 메타데이터가 포함되고 다른 바이트에는 원래 ByteArray 데이터의 실제 압축 버전이 포함됩니다. zlib 압축 데이터 형식 사양의 정의에 따라 원래 데이터의 압축 버전이 포함된 부분인 이러한 바이트는 deflate 알고리즘을 사용하여 압축됩니다. 결과적으로 이러한 바이트는 원래 ByteArray에 대해 compress(air. CompressionAlgorithm.DEFLATE)
를 호출한 결과와 같습니다. 그러나 compress(air. CompressionAlgorithm.ZLIB)
결과에는 추가 메타 데이터가 포함되는 반면 compress( CompressionAlgorithm.DEFLATE)
결과에는 원래 ByteArray 데이터의 압축 버전만 포함되고 다른 데이터가 없습니다.
compress( CompressionAlgorithm.DEFLATE)
만 호출해서는 deflate 형식을 사용하여 ByteArray 인스턴스의 데이터를 gzip 또는 zip과 같은 특정 형식으로 압축할 수 없습니다. deflate 형식을 사용하여 얻은 압축 데이터 및 적절한 메타데이터를 비롯하여 압축 형식의 사양에 따라 구성된 ByteArray를 만들어야 합니다. 마찬가지로 해당 데이터에 대해 uncompress(CompressionAlgorithm.DEFLATE)
만 호출해서는 gzip 또는 zip과 같은 형식으로 압축된 데이터를 디코딩할 수 없습니다. 먼저 압축 데이터에서 메타데이터를 분리해야 합니다. 그런 다음 deflate 형식을 사용하여 압축 데이터의 압축을 해제할 수 있습니다.
매개 변수
algorithm:String (default = NaN ) — 압축 시 사용할 압축 알고리즘입니다. 유효한 값은 CompressionAlgorithm 클래스에 상수로 정의됩니다. 기본값은 zlib 형식을 사용하는 것입니다. compress( CompressionAlgorithm.DEFLATE) 를 호출하면 deflate() 메서드를 호출하는 것과 동일한 효과를 냅니다. lzma 알고리즘에 대한 지원이 Flash Player 11.3 및 AIR 3.3용으로 추가되었습니다. lzma 압축을 사용하려면 이러한 버전 또는 그 이상의 플레이어가 있어야 합니다.
|
관련 API 요소
deflate | () | 메서드 |
public function deflate():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
deflate 압축 알고리즘을 사용하여 바이트 배열을 압축합니다. 전체 바이트 배열이 압축됩니다.
호출 후에 ByteArray의 length
속성이 새로 설정됩니다. position
속성이 바이트 배열의 끝으로 설정됩니다.
deflate 압축 알고리즘에 대한 설명은 http://www.ietf.org/rfc/rfc1951.txt를 참조하십시오.
deflate()
만 호출해서는 deflate 형식을 사용하여 ByteArray 인스턴스의 데이터를 gzip 또는 zip과 같은 특정 형식으로 압축할 수 없습니다. deflate 형식을 사용하여 얻은 압축 데이터 및 적절한 메타데이터를 비롯하여 압축 형식의 사양에 따라 구성된 ByteArray를 만들어야 합니다. 마찬가지로 해당 데이터에 대해 inflate()
만 호출해서는 gzip 또는 zip과 같은 형식으로 압축된 데이터를 디코딩할 수 없습니다. 먼저 압축 데이터에서 메타데이터를 분리해야 합니다. 그런 다음 deflate 형식을 사용하여 압축 데이터의 압축을 해제할 수 있습니다.
관련 API 요소
inflate | () | 메서드 |
public function inflate():void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 10 |
deflate 압축 알고리즘을 사용하여 바이트 배열의 압축을 해제합니다. 바이트 배열은 동일한 알고리즘을 사용하여 압축해야 합니다.
호출 후에 ByteArray의 length
속성이 새로 설정됩니다. position
속성이 0으로 설정됩니다.
deflate 압축 알고리즘에 대한 설명은 http://www.ietf.org/rfc/rfc1951.txt를 참조하십시오.
압축 형식 데이터가 포함된 ByteArray에 대해 inflate()
만 호출해서는 gzip 또는 zip 형식의 데이터와 같이 deflate 압축 알고리즘을 사용하는 형식으로 압축된 데이터를 디코딩할 수 없습니다. 먼저 압축 데이터 형식의 일부로 포함된 메타데이터를 실제 압축 데이터에서 분리해야 합니다. 자세한 내용은 compress()
메서드 설명을 참조하십시오.
오류
IOError — 데이터가 올바른 압축 데이터가 아닙니다. 데이터가 압축에 사용된 것과 같은 압축 알고리즘으로 압축되지 않았습니다.
|
관련 API 요소
readBoolean | () | 메서드 |
readByte | () | 메서드 |
readBytes | () | 메서드 |
public function readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
바이트 스트림에서 length
매개 변수로 지정된 데이터 바이트 수를 읽습니다. 바이트 수를 bytes
매개 변수가 지정한 ByteArray 객체로 읽어 들여 offset
에서 지정한 위치에서 시작하는 대상 ByteArray에 기록합니다.
매개 변수
bytes:ByteArray — 데이터를 읽어들일 ByteArray 객체입니다.
| |
offset:uint (default = 0 ) — 읽어 온 데이터를 써야 하는 바이트 단위의 오프셋(위치)입니다.
| |
length:uint (default = 0 ) — 읽을 바이트 수입니다. 기본값인 0을 사용하면 읽을 수 있는 데이터를 모두 읽습니다.
|
오류
EOFError — 읽을 수 있는 데이터가 충분하지 않습니다.
| |
RangeError — 제공된 오프셋 및 길이를 합한 값이 uint의 최대값보다 큽니다.
|
readDouble | () | 메서드 |
readFloat | () | 메서드 |
readInt | () | 메서드 |
readMultiByte | () | 메서드 |
public function readMultiByte(length:uint, charSet:String):String
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
지정된 문자 세트를 사용하여 바이트 스트림에서 지정된 길이의 멀티바이트 문자열을 읽습니다.
매개 변수
length:uint — 바이트 스트림에서 읽을 바이트 수입니다.
| |
charSet:String — 바이트 해석에 사용할 문자 세트를 표시하는 문자열입니다. 사용할 수 있는 문자 세트 문자열에는 "shift-jis" , "cn-gb" , "iso-8859-1" 등이 있습니다. 전체 목록은 지원되는 문자 세트를 참조하십시오.
참고: 현재 시스템에서 |
String — UTF-8 인코딩 문자열입니다.
|
오류
EOFError — 읽을 수 있는 데이터가 충분하지 않습니다.
|
readObject | () | 메서드 |
readShort | () | 메서드 |
readUnsignedByte | () | 메서드 |
readUnsignedInt | () | 메서드 |
readUnsignedShort | () | 메서드 |
readUTF | () | 메서드 |
readUTFBytes | () | 메서드 |
public function readUTFBytes(length:uint):String
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
바이트 스트림에서 length
매개 변수에 지정된 길이의 UTF-8 바이트 시퀀스를 읽고 문자열을 반환합니다.
매개 변수
length:uint — UTF-8 바이트의 길이를 나타내는 unsigned short입니다.
|
String — 지정한 길이의 UTF-8 바이트로 구성된 문자열입니다.
|
오류
EOFError — 읽을 수 있는 데이터가 충분하지 않습니다.
|
toJSON | () | 메서드 |
public function toJSON(k:String):*
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 11, AIR 3, Flash Lite 4 |
ByteArray 객체의 JSON 인코딩 값을 사용자 정의할 수 있도록 재정의 가능한 메서드를 제공합니다.
JSON.stringify()
메서드는 탐색하는 각 객체에서 toJSON()
메서드를 찾습니다. toJSON()
메서드를 찾으면 JSON.stringify()
가 발견하는 각 값마다 해당 메서드를 호출하여 값과 쌍을 이루는 키에 전달합니다.
ByteArray는 단순히 클래스 이름을 반환하는 기본 toJSON()
구현을 제공합니다. 모든 ByteArray 내용에는 해석이 필요하므로 ByteArray 객체를 JSON으로 내보내려는 고객은 고객만의 구현을 제공해야 합니다. 이는 클래스 프로토타입에 toJSON()
메서드를 다시 정의하는 방식으로 수행하면 됩니다.
toJSON()
메서드는 어떤 유형의 값도 반환할 수 있습니다. 객체를 반환하면 stringify()
가 해당 객체로 회귀하고, toJSON()
이 문자열을 반환하면 stringify()
가 회귀하지 않고 탐색을 계속 진행합니다.
매개 변수
k:String — JSON.stringify() 가 이 객체를 탐색할 때 발견하는 키/값 쌍의 키입니다.
|
* — 클래스 이름 문자열입니다.
|
관련 API 요소
toString | () | 메서드 |
uncompress | () | 메서드 |
public function uncompress(algorithm:String):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
바이트 배열의 압축을 해제합니다. 호출 후에 ByteArray의 length
속성이 새로 설정됩니다. position
속성이 0으로 설정됩니다.
바이트 배열은 압축 풀기 시와 동일한 알고리즘을 사용하여 압축해야 합니다. 압축 풀기 알고리즘을 지정하려면 CompressionAlgorithm 클래스에 정의된 값을 algorithm
매개 변수로 전달합니다. 지원되는 알고리즘은 다음과 같습니다.
zlib 압축 데이터 형식에 대한 설명은 http://www.ietf.org/rfc/rfc1950.txt를 참조하십시오.
deflate 압축 알고리즘에 대한 설명은 http://www.ietf.org/rfc/rfc1951.txt를 참조하십시오.
lzma 압축 알고리즘은 http://www.7-zip.org/7z.html에 설명되어 있습니다.
압축 형식 데이터가 포함된 ByteArray에 대해 uncompress(CompressionAlgorithm.DEFLATE)
만 호출해서는 gzip 또는 zip 형식의 데이터와 같이 deflate 압축 알고리즘을 사용하는 형식으로 압축된 데이터를 디코딩할 수 없습니다. 먼저 압축 데이터 형식의 일부로 포함된 메타데이터를 실제 압축 데이터에서 분리해야 합니다. 자세한 내용은 compress()
메서드 설명을 참조하십시오.
매개 변수
algorithm:String (default = NaN ) — 압축 해제 시 사용할 압축 알고리즘입니다. 이 알고리즘은 데이터를 압축하는 데 사용된 것과 같은 압축 알고리즘이어야 합니다. 유효한 값은 CompressionAlgorithm 클래스에 상수로 정의됩니다. 기본값은 zlib 형식을 사용하는 것입니다. lzma 알고리즘에 대한 지원이 Flash Player 11.3 및 AIR 3.3용으로 추가되었습니다. lzma를 사용하려면 이러한 버전 또는 그 이상의 플레이어가 있어야 합니다.
|
오류
IOError — 데이터가 올바른 압축 데이터가 아닙니다. 데이터가 압축에 사용된 것과 같은 압축 알고리즘으로 압축되지 않았습니다.
|
관련 API 요소
writeBoolean | () | 메서드 |
writeByte | () | 메서드 |
writeBytes | () | 메서드 |
public function writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
지정된 바이트 배열인 bytes
에서 offset
(0부터 시작하는 인덱스)에서 시작하여 length
만큼의 바이트 시퀀스를 데이터 스트림에 씁니다.
length
매개 변수를 생략하면 기본 길이인 0이 사용되어 메서드는 offset
에서 시작하여 전체 버퍼를 씁니다. offset
매개 변수도 생략하면 전체 버퍼를 씁니다.
offset
또는 length
가 범위를 벗어나면 bytes
배열의 시작과 끝이 대신 적용됩니다.
매개 변수
bytes:ByteArray — ByteArray 객체입니다.
| |
offset:uint (default = 0 ) — 배열에서 쓰기를 시작할 위치를 나타내는 인덱스(0부터 시작)입니다.
| |
length:uint (default = 0 ) — 버퍼로 쓸 길이를 나타내는 부호 없는 정수입니다.
|
writeDouble | () | 메서드 |
writeFloat | () | 메서드 |
writeInt | () | 메서드 |
writeMultiByte | () | 메서드 |
public function writeMultiByte(value:String, charSet:String):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
지정된 문자 세트를 사용하여 멀티바이트 문자열을 바이트 스트림에 씁니다.
매개 변수
value:String — 쓸 문자열 값입니다.
| |
charSet:String — 사용할 문자 세트를 나타내는 문자열입니다. 사용할 수 있는 문자 세트 문자열에는 "shift-jis" , "cn-gb" , "iso-8859-1" 등이 있습니다. 전체 목록은 지원되는 문자 세트를 참조하십시오.
|
writeObject | () | 메서드 |
writeShort | () | 메서드 |
writeUnsignedInt | () | 메서드 |
writeUTF | () | 메서드 |
public function writeUTF(value:String):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
UTF-8 문자열을 바이트 스트림에 씁니다. UTF-8 문자열의 바이트 단위 길이를 16비트 정수로 먼저 쓰고 문자열의 문자를 나타내는 바이트를 씁니다.
매개 변수
value:String — 쓸 문자열 값입니다.
|
오류
RangeError — 길이가 65535보다 긴 경우입니다.
|
writeUTFBytes | () | 메서드 |
ByteArrayExample
클래스를 사용하여 부울 값과 원주율의 배정밀도 부동 소수점 표현을 바이트 배열에 씁니다. 이는 다음 단계로 이루어집니다.
- 새 ByteArray 객체 인스턴스인
byteArr
을 선언합니다. - 부울 값
false
에 해당하는 바이트 값을 기록한 다음 길이를 확인하고 다시 읽습니다. - 원주율의 수학적 값에 해당하는 배정밀도 부동 소수점 값을 씁니다.
- 기록된 아홉 개의 바이트를 각각 바이트 배열로 다시 읽습니다.
참고: 바이트에서 trace()
를 호출하면 바이트 배열에 저장되어 있는 바이트에 해당하는 10진수 값이 출력됩니다.
코드 끝에 파일 끝 오류를 검사하는 코드 조각이 추가되어 있습니다. 이렇게 하면 바이트 스트림의 끝에 도달할 때 읽기를 멈출 수 있습니다.
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, 03:17 PM Z