هل هناك طريقة لتخزين bigint كبيرة بشكل تعسفي في تسلسل بعض الشيء، في وقت لاحق فقط لتحويله إلى بنية bigint القياسية؟

cs.stackexchange https://cs.stackexchange.com/questions/128035

  •  29-09-2020
  •  | 
  •  

سؤال

أحاول أن أتخيل وسيلة لترميز الطبق في دفق بعض الشيء، بحيث يكون حرفيا مجرد سلسلة من البتات.ثم عند فك فك تيار هذا البت، ستولد نوع البيانات Bigint القياسية من بنية البيانات (مجموعة من الأعداد الصحيحة الصغيرة مع علامة).كيف يمكنك أن ترميز الطبق بمثابة تسلسل من البتات، وكيف يمكنك فك شفرة ذلك؟لا أرى كيفية تنفيذ التلاعب البذي الصحيح أو كيفية ترميز رقم تعسفي في البتات أكبر من 32 أو 64. إذا كانت اللغة مطلوبة، فسوف أقوم بذلك في جافا سكريبت.

على سبيل المثال، يستغرق هذا بايتات وتحويله إلى دفق بت واحد:

giveacodicetagpre.

كيف يمكنك أن تفعل نفس الشيء من الشيء للتسلسلات قليلا بشكل تعسفي؟

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

المحلول

ابحث في دلتا إلياس أو ترميز جاما كمثال.

نصائح أخرى

هناك

هناك العديد من الترميزات الشائعة للأعداد الصحيحة ذات الطول التعسفي. أود أن أقول أن التمثيلات الأكثر استخداما هي:

  • تمثيل بيانات الطول، حيث يتم كتابة عدد البايتات / الكلمات أولا، تليها البيانات.
  • تمثيل "بعض الشيء". إذا كانت حجم الكلمة b bits، فسيتم تقسيم عدد صحيح إلى مجموعات من بتات B-1 ، مع الإشارة إلى الترتيب العالي ما إذا كان هناك بايت آخر بعد أم لا.

يمكنك خلط وتتناسب مع هذه. قواعد الترميز الأساسية ASN.1 حالة في النقطة، حيث يوجد في الحالة العامة، يتم ترميز حقل الطول في قاعدة 128 باستخدام القليل المطلوب. يستخدم ASN.1 BER في العديد من بروتوكولات الشبكة، مثل VoIP و SNMP و LDAP، وكذلك في التشفير ، حيث يمثل أعداد صحيحة كبيرة هو شيء شائع.

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