Đọc và ghi tệp nhị phân trong php
BinaryStream - một công cụ hữu ích để làm việc với dữ liệu nhị phân và là sự thay thế tốt nhất cho pack()/unpack() với danh sách lớn các tính năng Show Nếu bạn đang tìm kiếm một công cụ tiện lợi cho phép đọc và ghi dữ liệu nhị phân (dù là định dạng hiện có hay do bạn tạo ra), bạn hãy chọn đúng thư viện _BinaryStream_ - là một công cụ mạnh mẽ để đọc và ghi các tệp nhị phân. Nó hỗ trợ nhiều loại dữ liệu cấp cao và đôi khi khiến bạn quên rằng mình đang làm việc với dữ liệu nhị phân phi cấu trúc Với BinaryStream, bạn có thể xử lý các gói mạng, tệp nhị phân, giao thức hệ thống và dữ liệu cấp thấp khác Đặc trưng
Tại sao về mặt khách quan, gói/giải nén lại tốt hơn? Và đó là tất cả với PHP 5. 3 Thủ côngCách sử dụng đơn giảnCách dễ nhất để sử dụng BinaryStream - cái này
Ví dụ này đọc 20 byte ở đầu tệp dưới dạng chuỗi Một ví dụ phức tạp hơn, trong đó dữ liệu được đặt theo thứ tự sau. - số nguyên (int, 32 bit) - float (float, 32 bit) - byte cờ (trong đó mỗi bit có giá trị riêng, 8 bit). bit đầu tiên xác định xem sau byte này có ghi dữ liệu khác hay không, 5 bit trống và 2 bit cuối cùng của loại dữ liệu
Để đọc những dữ liệu này và những dữ liệu phụ thuộc vào cờ, ví dụ này phù hợp
Trong ví dụ này, chúng tôi đọc dữ liệu cơ bản và bổ sung, dựa trên giá trị của cờ Nhưng nó không chắc là rất ít dữ liệu. Để thuận tiện hơn, bạn có thể sử dụng chức năng đọc theo nhóm. Ví dụ trước có thể được viết lại như sau
Nếu bạn đang đọc một tệp trong đó các nhóm dữ liệu như vậy được lặp lại, bạn có thể lưu một nhóm có tên, sau đó chỉ cần tham khảo nhóm đó để đọc dữ liệu tiếp theo. Hãy để chúng tôi giới thiệu thêm một giá trị cho data_type. 2 - nghĩa là đây là nhóm dữ liệu cuối cùng trong tệp. Một ví dụ sẽ là
Và bây giờ hãy tưởng tượng rằng chúng ta đã chuyển sang một định dạng tệp mới khác với định dạng trước đó và có một dấu nhất định ở đầu tệp, điều này sẽ giúp phân biệt định dạng mới với định dạng cũ. Ví dụ, một nhãn mới là một dãy ký tự 3. Chúng ta cần kiểm tra nhãn và nếu có, hãy phân tích tệp theo sơ đồ khác và nếu không, hãy sử dụng phiên bản cũ của bộ xử lý. Một ví dụ để minh họa điều này
Cài đặtCài đặt qua nhà soạn nhạc ________số 8Tài liệu tham khảoLoại dữ liệuTất cả các loại dữ liệu được sử dụng được trình bày trong bảng sau Loại hình. kích thước. phạm vi giá trị. ghi chú. . ---------. -----------------. -------------------------------------------------- . -------. . số nguyên. 8/16/32/64 bit. 0 đến 255/65 535/4 294 967 295/9 223 372 036 854 775 807. Ngoài ra, có hỗ trợ cho các kích thước không chuẩn như 24, 40, 48 và 56 bit. . . trôi nổi. 32/64 bit. 0 đến 3. 4x10^38/1. 798 x 10^308. Ngoài ra, có hỗ trợ chọn thứ tự byte khi lưu trữ số float (không giống như 4). . . than. 1 byte. Từ 0 đến 255 ký tự ascii. -. . sợi dây. [n] byte. . . -. . chút. [n] bit. 0 hoặc 1. Ngoài ra, có hỗ trợ kết hợp một số bit liên tiếp trong một giá trị. API
Các nhóm trườngBạn có thể lưu danh sách các định nghĩa trường với một tên cụ thể và sử dụng tên đó khi bạn cần đọc cùng một khối vài lần. Một nhóm được xác định bởi cấu hình nhóm - danh sách các trường, loại và kích thước của chúng. Để soạn cấu hình nhóm, hãy tạo một mảng. các phím xác định loại và tên của các trường, giá trị - kích thước của chúng. - khóa là tên của trường và có thể chứa loại trường. Để chỉ định loại, hãy thêm tên bằng một chữ cái loại và dấu hai chấm. gõ chữ cái 0
Vì vậy, ví dụ đầy đủ về cấu hình nhóm 2Phương pháp. Cách sử dụng. ghi chú. . -----------------------------------------------. -------------------------------------------------- . -------------------------------------------------- . . 5. 6. Tạo nhóm mới với vài trường. Nếu nhóm có tên đó đã tồn tại, nó sẽ thay thế nhóm ban đầu. . . 7. 8. Nó cho phép bạn đọc dữ liệu từ cấu hình đã lưu sẵn. Để lưu một nhóm dưới một tên mới, hãy sử dụng phương pháp 9. . 0. 1. Các trường được liệt kê trong mảng dưới dạng trong đó các khóa xác định loại và tên của trường dữ liệu cũng như giá trị - thứ nguyên (được hiểu là byte cho chuỗi và ký tự và là bit cho mọi thứ khác). được hỗ trợ. 2, 3, 4, 5 và 6. Nếu loại không được chỉ định, trường được coi là một bit (hoặc một vài bit). Loại và tên được phân tách bằng dấu hai chấm (. ). dẫn đường
Phương pháp. Cách sử dụng. ghi chú. . ----------------. ----------------------------. -------------------------------------------------- . . 7. 8. Nó đi đến vị trí tuyệt đối trong tập tin. Nếu bạn chuyển một giá trị âm, thì giá trị của con trỏ sẽ được đặt thành _______29 byte từ cuối tệp. . . 0. 1. Nó di chuyển đến vị trí mà dấu 2 đã được đặt. . . 3. 4. Bỏ qua các byte sau 5.
Phương pháp. Cách sử dụng. ghi chú. . ------------------------------. ------------------------------------------. -------------------------------------------------- . . 6. 7. Nó lưu vị trí con trỏ hiện tại dưới tên 8. . . 9. 0. Nó lưu vị trí cụ thể trong tệp dưới tên 8. . . 2. 3. Kiểm tra xem dấu 8 đã được đặt chưa. Trả về true hoặc false. Phụ trợ
Không thay đổi. Nghĩa. . ------------------------. --------------------------------------. . 8. Big-endian cho số nguyên và số float. . 9. Little-endian cho số nguyên và floatcấu hìnhPhương pháp. Cách sử dụng. ghi chú. . ----------------------------. -------------------------------------------------- . -------------------------------------------------- . . 0. 1. Tải cấu hình (thứ tự byte và nhóm dữ liệu) từ tệp bên ngoài. Định dạng cấu hình - ini. Để xem ví dụ về tệp như vậy, hãy mở conf/mp3. tập tin conf. . . 2. 3. Lưu cài đặt hiện tại của thứ tự byte và tất cả các nhóm dữ liệu đã tạo vào một tệp bên ngoài ở định dạng ini. Cấu hình này sau đó có thể được khôi phục từ tệp bằng phương pháp 4. Sử dụng nâng cao. ViếtNếu bạn là người cần ghi dữ liệu vào tệp nhị phân, bạn có thể sử dụng các phương pháp bổ sung để thực hiện việc này Đầu tiên, bạn cần mở tệp ở một trong các chế độ cho phép ghi tệp (theo mặc định, tệp được mở ở chế độ chỉ đọc). Đối với điều này khi bạn tạo một đối tượng BinaryStream chỉ định trong đối số thứ hai một trong các chế độ sau Cách thức. Không thay đổi. ghi chú. . ------------. --------------------------. -------------------------------------------------- . . Sự sáng tạo. 5. Tạo tập tin mới. Thất bại khi tập tin đã tồn tại. . . giải trí. 6. Xóa tất cả nội dung tệp và đặt con trỏ ở đầu. Thất bại khi tập tin không tồn tại. . . viết lại. 7. Mở tệp và đặt con trỏ ở đầu. Thất bại khi tập tin không tồn tại. . . Đang bổ sung. 8. Mở tệp và đặt con trỏ ở cuối. Thất bại khi tập tin không tồn tại. Sau khi bạn đã mở tệp chính xác, bạn có thể sử dụng các phương pháp sau, được đặt tên theo cách tương tự với phương pháp khác được thiết kế để đọc Loại dữ liệu. Phương pháp. Thí dụ. ghi chú. . ---------------. ----------------------------------------. -------------------------------------------------- . -------------------------------------------------- . . chút. 9. 0. . . . 1. 2. Bạn có thể kết hợp nhiều bit thành một số. Để làm điều này, thay vì sử dụng một mảng boolean, trong đó phần tử đầu tiên là số bit được sử dụng để ghi số và phần tử thứ hai - số. . . than. 3. 4. Bạn có thể chuyển một ký tự (chuỗi) và mã cho ký hiệu này (một số nguyên lên tới 256). . . số nguyên. 5. 6. Nó hỗ trợ các kích thước sau. 8, 16, 32, 64 bit. . . trôi nổi. 7. 8. Nó hỗ trợ các kích thước sau. 32, 64 bit. . . sợi dây. 9. 00.
Làm cách nào tôi có thể ghi dữ liệu nhị phân vào một tệp trong PHP?Để ghi dữ liệu nhị phân vào một tệp, bạn có thể sử dụng các hàm pack() và unpack() . Gói sẽ tạo ra một chuỗi nhị phân. Vì kết quả là một chuỗi, bạn có thể nối các số nguyên thành một chuỗi. Sau đó viết chuỗi này dưới dạng một dòng vào tệp của bạn.
PHP có thể truy cập các tệp nhị phân không?tập lệnh php không thể xem hoặc truy cập tệp nhị phân .
Fread PHP là gì?Định nghĩa và cách sử dụng
. Chức năng sẽ dừng ở cuối tệp hoặc khi đạt đến độ dài quy định, tùy theo điều kiện nào đến trước. reads from an open file. The function will stop at the end of the file or when it reaches the specified length, whichever comes first. |