Quickhash QuickHashStringIntHash::loadFromFile
(사용 가능한 버전 정보가 없으며 Git에만 있을 수 있음)
QuickHashStringIntHash::loadFromFile — 이 팩토리 메소드는 파일에서 해시를 생성합니다.
설명
public static QuickHashStringIntHash::loadFromFile(string $filename
, int $size
= 0, int $options
= 0): QuickHashStringIntHash
이 팩토리 메소드는 디스크의 정의 파일에서 새 해시를 생성합니다. 파일 형식은 서명 'QH\0x21\0'
, 시스템 Endianness의 32비트 부호 있는 정수로 된 요소 수, 문자로 따를 요소 데이터 수를 포함하는 부호 없는 32비트 정수로 구성됩니다. 이 요소 데이터에는 모든 문자열이 포함됩니다. 버킷 목록의 수를 포함하는 또 다른 부호 있는 32비트 정수 다음에 옵니다. 헤더와 문자열 다음에 요소가 옵니다. 해시를 복원하기 위해 키를 해시할 필요가 없도록 버킷 목록에 따라 정렬됩니다. 각 버킷 목록에 대해 다음 정보가 저장됩니다(모두 32비트 정수로). 버킷 목록 인덱스, 해당 목록의 요소 수, 그리고 두 개의 부호 없는 32비트 정수 쌍으로 요소(여기서 첫 번째 것은 키를 포함하는 문자열 목록에 대한 색인과 값을 포함하는 두 번째 것. 예를 들면 다음과 같습니다.
예제 #1 QuickHash StringIntHash 파일 형식
00000000 51 48 21 00 02 00 00 00 09 00 00 00 40 00 00 00 |QH!.........@...| 00000010 4f 4e 45 00 4e 49 4e 45 00 07 00 00 00 01 00 00 |ONE.NINE........| 00000020 00 00 00 00 00 01 00 00 00 2f 00 00 00 01 00 00 |........./......| 00000030 00 04 00 00 00 03 00 00 00 |.........| 00000039
예제 #2 QuickHash IntHash 파일 형식
header signature ('QH'; key type: 2; value type: 1; filler: \0x00) 00000000 51 48 21 00 number of elements: 00000004 02 00 00 00 length of string values (9 characters): 00000008 09 00 00 00 number of hash bucket lists (this is configured for hashes as argument to the constructor normally, 64 in this case): 0000000C 40 00 00 00 string values: 00000010 4f 4e 45 00 4e 49 4e 45 00 bucket lists: bucket list 1 (with key 7, and 1 element): header: 07 00 00 00 01 00 00 00 elements (key index: 0 ('ONE'), value = 0): 00 00 00 00 01 00 00 00 bucket list 2 (with key 0x2f, and 1 element): header: 2f 00 00 00 01 00 00 00 elements (key index: 4 ('NINE'), value = 3): 04 00 00 00 03 00 00 00
매개변수
filename
- 해시를 읽을 파일의 파일 이름입니다.
size
- 구성할 버킷 목록의 양입니다. 전달한 숫자는 자동으로 다음 2의 거듭제곱으로 반올림됩니다. 또한 자동으로
4
에서4194304
로 제한됩니다. options
- 클래스의 생성자가 취하는 것과 동일한 옵션; 크기 옵션이 무시된다는 점을 제외하고. 파일 형식에서 읽습니다(해시 항목 수에서 자동으로 계산되는 QuickHashIntHash 및 QuickHashIntStringHash 클래스와 달리).
반환 값
새 QuickHashStringIntHash를 반환합니다.
Examples
예제 #3 QuickHashStringIntHash::loadFromFile() 예제
<?php
$file = dirname( __FILE__ ) . "/simple.hash.string";
$hash = QuickHashStringIntHash::loadFromFile(
$file,
QuickHashStringIntHash::DO_NOT_USE_ZEND_ALLOC
);
foreach( range( 0, 0x0f ) as $key )
{
$i = 48712 + $key * 1631;
$k = base_convert( $i, 10, 36 );
echo $k, ' => ', $hash->get( $k ), "\n";
}
?>
위의 예는 다음과 유사한 결과를 출력합니다.
11l4 => 48712 12uf => 50343 143q => 51974 15d1 => 53605 16mc => 55236 17vn => 56867 194y => 58498 1ae9 => 60129 1bnk => 61760 1cwv => 63391 1e66 => 65022 1ffh => 66653 1gos => 68284 1hy3 => 69915 1j7e => 71546 1kgp => 73177