إنشاء ملف ثنائي مع بنية معينة
-
25-09-2019 - |
سؤال
لديّ Witch Witch يستخدم تكوين نمط التنسيق الثنائي ، وعلي أن أقوم بإنشاء تلك الملفات على نحو حافل.
يجب أن تتكون بنية الملف من عدد من إعدادات التكوين (1 لكل معلمة) كل من النموذج:
- يكتب
- طول
- قيمة
أين:
- النوع: هو معرف واحد من الأوكتيت يحدد المعلمة
- الطول: هو ثماني واحد يحتوي على طول حقل القيمة في الثمانيات (لا يشمل حقول النوع والطول)
- القيمة: من واحد إلى 254 ثمارية تحتوي على القيمة المحددة للمعلمة
لدي جدول مقابل
Type_code[int] => { Type_length[int] => Value[int/string/hex/etc.] }
كيفية تحليل هذا الجدول على هذا التنسيق الثنائي؟ والطريقة الثانية ، كيفية تحليل هذا الملف الثنائي ، إلى تنسيق صفيف PHP؟
المحلول
هناك رزمة/أفرغ الوظائف التي يمكن أن تترجم بين مختلف تنسيقات الثنائي/السداسي/الأوكتال/السلسلة. اقرأ جزءًا كبيرًا من الملف ، واستخلص البتات اللازمة مع تفريغ ، والعمل من هناك.
$fh = fopen('data.txt', 'rb'); // b for binary-safe
// read 2 bytes, extract code/length, then read $length more bytes to get $value
while(($data = fread($fh, 2)) !== EOF)) {
list($code, $length) = unpack('CC', $data);
$data = fread($fh, $length);
// do stuff
}
fclose($fh);
لا تنتمي إلى StackOverflow