كيف تنبعث من البيانات الثنائية الأولية وتوضعها باستخدام YAML-CPP

StackOverflow https://stackoverflow.com/questions/4046389

  •  27-09-2019
  •  | 
  •  

سؤال

هل من الممكن انبعاث البيانات الثنائية (PARSE) (صورة ، ملف ، إلخ)؟ مثل هذا يظهر هنا:http://yaml.org/type/binary.htmlكيف يمكنني القيام بذلك في Yaml-CPP؟

هل كانت مفيدة؟

المحلول

اعتبارا من المراجعة 425, ، نعم! (للنبعث)

YAML::Emitter emitter;
emitter << YAML::Binary("Hello, World!", 13);
std::cout << emitter.c_str();

المخرجات

--- !!binary "SGVsbG8sIFdvcmxkIQ=="

بناء الجملة

YAML::Binary(const char *bytes, std::size_t size);

لم أكن متأكدًا من كيفية تمرير مجموعة البايت: char ليس بالضرورة بايت واحد ، لذلك لست متأكدًا من مدى محمولة الخوارزمية. ما هو التنسيق الذي يوجد فيه صفيف البايت الخاص بك؟

(المشكلة هي uint8_t ليس C ++ قياسي حتى الآن ، لذلك أنا قلق قليلاً بشأن استخدامه.)

أما في التحليل ، yaml-cpp من المؤكد أن تحليل البيانات كسلسلة ، ولكن لا توجد خوارزمية فك التشفير حتى الآن.

نصائح أخرى

يتم الرد هنا على كيفية قراءة/تحليل البيانات الثنائية من ملف YAML مع مكتبة YAML-CPP.

تفترض هذه الإجابة أنك قادر على تحميل كائن عقدة YAML :: Node من ملف YAML - موضح في دروس YAML -CPP: https://github.com/jbeder/yaml-cpp/wiki/Tutorial).

الكود لتحليل البيانات الثنائية من عقدة YAML هي:

YAML::Binary binary = node.as<YAML::Binary>();
const unsigned char * data = binary.data();
std::size_t size = binary.size();

ثم لديك مجموعة من "بيانات" البايتات ذات الحجم المعروف "الحجم".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top