سؤال

ASCII85 لديه وظيفة للحصول على الحد الأقصى لطول التشفير MaxEncodedLen().

أعتقد أنه ينبغي أن يكون لها وظيفة للغاية للحصول على الطول عند فك التشفير كما هو الحال في Base64.

http://golang.org/pkg/encoding/ascii85/

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

المحلول

إليك وظيفة لحساب GO package ascii85 MaxDecodedLen() إلى عن على n بايت مشفرة.

func MaxDecodedLen(n int) int {
    const binWordLen = 4
    return n * binWordLen
}

إذا كانت جميع البايتات الأربعة لمجموعة غير مشفرة صفرًا ، يتم تمثيلها بايت واحد ، الشخصية z, ، بدلاً من خمس نقاط تعجب (!!!!!). في بعض التطبيقات ، يمكن تمثيل مجموعة غير مشفرة من المساحات y.

ascii85.Decode(), ، على عكس ascii85.Encode(), ، لديه عدد من البايتات المستهلكة (nsrc) و flush المعلمات ، بالإضافة إلى عدد من البايتات المكتوبة (ndst) المعلمة ، والتي تسمح للمبرمج بفك تشفير كتل متعددة أو قطعة قطعة واحدة على حدة. لذلك ، مخزن مؤقت للوجهة أقل من MaxDecodedLen() يمكن استخدامها.

نصائح أخرى

في رأيي ، أثناء تشفير MaxEncodedLen () أمر إلزامي لمعرفة عدد البايتات المطلوبة للاحتفاظ بالإخراج المشفر (أي حجم المخزن المؤقت للوجهة).
حيث في حالة فك التشفير ، يمكن للمتصل تمرير المخزن المؤقت للوجهة من الحجم يساوي المخزن المؤقت للمصدر على الرغم من أن المخزن المؤقت الوجهة يمكن أن يكون حجمه أقل.
بدلاً من ذلك ، يمكننا استخدام المصدر الأصلي ، أي حجم المخزن المؤقت غير المشفر ، إذا كان سياق/نطاق التنفيذ للترميز وفك التشفير هو نفسه. وبالتالي فإن الوظيفة المتوقعة ، maxDecodedLen () اختيارية.

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