LabVIEW는 메모리의 포맷으로부터 온 데이터를 파일에 쓰거나 파일로부터 읽는데 더 적합한 형태로 변환합니다. 이 더 적합한 형태를 패턴화된 데이터라고 부릅니다.

LabVIEW는 문자열, 배열, 경로를 핸들(메모리의 분리된 영역에서 포인터에 대한 포인터)에 저장하기 때문에, 이 문자열과 배열을 가지고 있는 클러스터는 인접해 있지 않습니다. 일반적으로, LabVIEW는 데이터를 트리 형태로 저장합니다. 예를 들면, LabVIEW는 클러스터를 배정도 부동소수로 저장하고, 문자열을 4바이트 핸들이 뒤에 따라오는 8바이트 부동소수로 저장합니다. LabVIEW는 메모리에 확장형 부동소수에 인접한 문자열 데이터를 저장하지 않습니다. 그러므로 디스크에 클러스터 데이터를 쓰려면 LabVIEW는 두 개의 다른 장소로부터 데이터를 얻어야 합니다. 많은 문자열, 배열 및/또는 경로를 가지고 있는 클러스터와 함께, LabVIEW는 데이터를 여러 다른 장소에 저장합니다.

데이터를 파일에 저장할 때, LabVIEW는 데이터를 저장하기 전에 단일 문자열로 패턴화합니다. 데이터를 패턴화하면 임의의 복소수 클러스터로부터의 데이터가 여러 장소에 저장되지 않고 인접한 데이터가 됩니다. LabVIEW가 파일에서 데이터를 로드할 때, LabVIEW는 단일 문자열을 읽고 그 문자열을 그 내부에서 가능한 인접하지 않은 형태로 패턴화 해제하는 반대 작업을 수행해야 합니다.

LabVIEW는 표준 형태로 패턴화된 데이터를 정규화하여 VI가 실행되는 플랫폼에 관계없이 데이터를 사용할 수 있도록 합니다. LabVIEW는 패턴화된 숫자 데이터를 빅 엔디언 형태(최상위 바이트 먼저)로 저장하고 패턴화된 확장형 부동소수를 16 바이트로 저장합니다.

LabVIEW로 만들지 않은 어플리케이션에서 사용되는 파일에 데이터를 쓸 때 또는 LabVIEW로 만들지 않은 어플리케이션에서 생성된 파일로부터 데이터를 읽을 때, 데이터를 패턴화한 후나 패턴화 해제하기 전에 리틀 엔디언(최하위 바이트 먼저)이나 빅 엔디언 형태로 변환할 수 있습니다. Windows 기반의 어플리케이션은 일반적으로 숫자 데이터가 리틀 엔디언의 형태가 될 것을 예상합니다.

[패턴화된 문자열로][문자열로부터 패턴화 해제] 함수를 사용하여 LabVIEW가 데이터를 저장하고 로드할 때 내부적으로 LabVIEW가 하는 것처럼 데이터를 패턴화하고 패턴화 해제합니다.

데이터의 패턴화된 형태는 데이터의 타입을 인코딩하지 않습니다. LabVIEW는 이 정보를 타입 설명자에 저장합니다. [문자열로부터 패턴화 해제] 함수를 사용하려면 데이터 타입을 입력으로 연결하여 그 함수가 문자열을 적절히 디코드할 수 있도록 해야 합니다.

배리언트 데이터 타입을 사용하여 메모리에 쓸 때 데이터를 패턴화하고 메모리에서 읽을 때 데이터를 패턴화 해제하는 대신에 데이터 타입에 독립적으로 데이터를 다룰 수 있습니다. 배리언트 함수를 사용하여 배리언트 데이터를 생성하고 처리합니다.

노트 배리언트 데이터에서 [패턴화된 문자열로] 함수를 사용하는 경우, LabVIEW는 배리언트와 그 속성을 포함하는 모든 내용을 패턴화합니다. 그러나, [배리언트를 패턴화된 문자열로] 함수를 사용하는 경우, LabVIEW는 오직 배리언트만을 패턴화하고 모든 속성을 삭제합니다.

불리언과 숫자형 객체

모든 숫자 타입과 불리언 타입의 패턴화된 형태는 빅 엔디언 포맷으로만 데이터를 저장합니다. 예를 들면, -19의 값을 가진 32비트 정수는 FFFF FFED로 패턴화됩니다. 1/4와 같은 값을 가진 배정도 부동소수는 3FD0 0000 0000 0000으로 패턴화됩니다. 참인 불리언 값은 제로가 아닌 모든 값입니다. 거짓의 불리언 값은 00입니다.

확장형 수의 패턴화된 형태는 128비트의 확장형 부동소수 포맷입니다. 확장형 수를 디스크에 저장할 때, LabVIEW는 그 수를 이 포맷으로 저장합니다.

문자열과 경로

문자열과 경로가 여러가지 크기를 가지기 때문에, 그 길이를 바이트로 기록하는 패턴화된 32비트 정수가 패턴화된 형태의 앞에 옵니다. 예를 들면, ABC 값을 가진 문자열 타입은 0000 0003 4142 43으로 패턴화됩니다. 문자열의 경우, 패턴화된 포맷은 문자열이 메모리에서 취한 포맷과 비슷합니다.

그러나, LabVIEW가 메모리에 경로를 저장할 때 경로는 앞에 길이 값을 가지고 있지 않으므로, 이 값은 메모리의 데이터의 실제 크기로부터 얻고 LabVIEW가 데이터를 패턴화할 때 그 값이 앞에 옵니다. 이 길이의 앞에 4개의 문자인 PTH0가 옵니다.

예를 들면 C:\File의 값을 가진 경로는 5054 4830 0000 000B 0000 0002 0143 0466 696C 65로 패턴화됩니다.

5054 4830PTH0을 나타냅니다. 0000 000B은 전체 11 바이트를 나타냅니다. 0000은 타입입니다. 0002은 구성요소의 개수입니다. 0143은 파스칼 문자열로 글자 C를 나타냅니다. 0466 696C 65은 파스칼 문자열로 단어 File을 나타냅니다.

배열

배열의 각 차원 크기를 원소로 기록하는 패턴화된 32비트 정수는 패턴화된 배열을 위한 데이터의 앞에 옵니다. 차원 크기가 메모리에 저장되는 것처럼, 가장 느리게 변하는 차원이 먼저 오고, 더 빠르게 변하는 차원이 연속해서 옵니다. 패턴화된 데이터는 LabVIEW가 메모리에 저장하는 것과 같은 순서로 이 차원 크기 바로 다음에 옵니다. 다음 예제는 6개의 8비트 정수의 2D 배열을 보여줍니다.

{ {1, 2, 3}, {4, 5, 6} }0000 0002 0000 0003 0102 0304 0506로 패턴화됩니다.

다음 예제는 불리언 변수의 패턴화된 1D 배열을 보여줍니다.

{T, F, T, T}0000 0004 0100 0101로 패턴화됩니다. 참에 대해 선호하는 값은 01입니다.

클러스터

패턴화된 클러스터는 그 원소의 패턴화된 데이터를 클러스터 순서로 연결하는 것입니다. 예를 들면, 십진수로 4인 값의 16비트 정수와 12인 값의 32비트 정수의 패턴화된 클러스터는 0004 0000 000C입니다.

문자열 ABC의 패턴화된 클러스터와 4의 16비트 정수의 패턴화된 클러스터는 0000 0003 4142 4300 04입니다.

7의 16비트 정수의 패턴화된 클러스터, 89의 16비트 정수의 패턴화된 클러스터는 0007 0008 0009입니다.

웨이브폼

LabVIEW는 웨이브폼을 클러스터같이 패턴화합니다.

참조 번호

LabVIEW는 대부분의 패턴화된 참조 번호를 패턴화된 32비트 정수로 저장하는데, 이것은 LabVIEW 내부 데이터 구조를 나타냅니다.

그 참조 번호 타입 코드로 나머지 참조 번호를 분류할 수 있습니다.

타입 코드인 0xE, 0xF, 0x15는 데이터를 패턴화된 문자열로 저장하는 참조 번호입니다. 이 문자열은 참조 번호 태그의 값을 가지고 있으며 비어 있는 경우(제로의 4 바이트)도 있습니다.

타입 코드인 0x1A, 0X1C, 0x1D는 다음 순서로 연결됩니다:

  1. 참조 번호 태그에 있는 이름의 패턴화된 문자열. 참조 번호가 태그를 가지고 있지 않다면 이 문자열은 비어 있습니다(제로의 4 바이트).
  2. 참조 번호에 특정한 정보를 가지고 있는 패턴화된 문자열. 이 문자열은 비어 있을 수 있습니다(제로의 4 바이트).
  3. 참조 번호에 특정한 정보를 가지고 있는 패턴화된 문자열. 이 문자열은 비어 있을 수 있습니다(제로의 4 바이트).
  4. 참조 번호에 특정한 정보를 가지고 있는 패턴화된 32비트 부호있는 정수.
  5. 참조 번호에 특정한 정보를 가지고 있는 패턴화된 문자열. 이 문자열은 비어 있을 수 있습니다(제로의 4 바이트).

클래스

LabVIEW는 다음 일반 포맷에 따라 LabVIEW 클래스를 패턴화합니다:

계층구조 안의 레벨 클래스 이름 버전 리스트 프라이빗 데이터
  • 계층구조 안의 레벨 — 클래스 계층구조에서 클래스가 발생하는 레벨의 수를 나타내는 4바이트 부호 없는 정수. 예를 들어 이 값이 2이라면, 이 클래스와 LabVIEW 객체 사이에는 한 개의 상위 클래스가 있습니다.
    노트 계층구조 안의 레벨이 0인 경우, 객체는 LabVIEW 객체의 인스턴스이며 LabVIEW는 문자열에서 다른 3개의 필드를 제외합니다.
  • 클래스 이름 — 클래스의 정규화된 이름의 길이를 나타내는 단일 바이트 뒤 따라오는 파스칼 문자열의 시퀀스. 각 파스칼 문자열, 즉 첫 번째 바이트가 문자열의 길이를 나타내고 나머지 바이트가 문자열의 텍스트를 나타내는 바이트의 시퀀스는 정규화된 이름의 한 부분을 나타냅니다. 파스칼 문자열의 끝은 제로의 길이 바이트입니다. 패턴화된 문자열의 이 섹션에는 클래스 이름 섹션을 4 바이트의 배수로 증가시키는데 충분한 제로 패드 바이트가 포함되어 있습니다.
  • 버전 리스트 — 각 클러스터가 버전 번호를 나타내는 4개의 2바이트 부호 없는 정수인 클러스터의 시리즈. 이 리스트의 첫 번째 클러스터는 클래스 이름의 버전, 두 번째는 상위 클래스의 버전을 나타내며 뒤의 숫자도 이와 같이 진행됩니다. 이 리스트는 계층구조 안의 각 레벨에 대해 한 개의 버전 번호를 포함합니다.
    노트 계층구조 안의 레벨이 1이고 버전이 0인 경우, 패턴화된 데이터는 이 클래스의 기본 데이터를 나타내며 LabVIEW는 문자열의 나머지 필드를 제외합니다.
  • 프라이빗 데이터 — 계층구조의 각 레벨의 프라이빗 데이터를 나타내는 패턴화된 클러스터 시리즈. 버전 리스트와는 반대 순서로, 이 시리즈의 첫 번째 클러스터는 최상위 클래스와 상응합니다. 각각의 패턴화된 클러스터는 뒤에 오는 데이터의 바이트 수를 나타내는 4바이트 부호있는 정수로 시작합니다. 첫 번째 수가 0인 경우, 패턴화된 클러스터는 계층구조의 상응하는 클래스의 기본 데이터를 나타냅니다. 그렇지 않으면, 다음 데이터는 이 토픽 앞 부분에서 설명된 패턴화된 클러스터 표준형을 사용합니다. 각 패턴화된 클러스터는 클러스터를 4 바이트의 배수로 증가시키는데 충분한 패드 바이트로 끝납니다.