Ascii85
ASCII85، جسے بیس 85 بھی کہا جاتا ہے، بائنری ٹو ٹیکسٹ انکوڈنگ کی ایک شکل ہے جسے پال ای روٹر نے بی ٹی او اے یوٹیلیٹی کے لیے تیار کیا ہے۔ بائنری ڈیٹا کے چار بائٹس کی نمائندگی کرنے کے لیے پانچ ASCII حروف کا استعمال کرتے ہوئے (انکوڈ شدہ سائز کو اصل سے بڑا بناتے ہوئے، آٹھ بٹس فی ASCII کردار فرض کرتے ہوئے)، یہ uuencode یا Bas64 سے زیادہ موثر ہے، جو تین بائٹس کی نمائندگی کرنے کے لیے چار حروف استعمال کرتے ہیں۔ ڈیٹا (اضافہ، آٹھ بٹس فی ASCII کردار فرض کرتے ہوئے)۔ اس کے اہم جدید استعمال ایڈوب کے پوسٹ اسکرپٹ اور پورٹیبل ڈاکیومنٹ فارمیٹ فائل فارمیٹس کے ساتھ ساتھ گٹ کے ذریعہ استعمال ہونے والی بائنری فائلوں کے لیے پیچ انکوڈنگ میں ہیں۔ بائنری ٹو ٹیکسٹ انکوڈنگ کی بنیادی ضرورت پہلے سے موجود مواصلاتی پروٹوکول پر من مانی بائنری ڈیٹا کو بات چیت کرنے کی ضرورت سے آتی ہے جو صرف انگریزی زبان کے انسانی پڑھنے کے قابل متن کو لے جانے کے لیے ڈیزائن کیے گئے تھے۔ وہ مواصلاتی پروٹوکول صرف 7 بٹ محفوظ ہو سکتے ہیں (اور اس کے اندر کچھ ASCII کنٹرول کوڈز سے بچیں)، اور کچھ زیادہ سے زیادہ وقفوں پر لائن بریک کی ضرورت پڑ سکتی ہے، اور وائٹ اسپیس کو برقرار نہیں رکھ سکتے ہیں۔ اس طرح، صرف 94 پرنٹ ایبل ASCII حروف ڈیٹا پہنچانے کے لیے استعمال کرنے کے لیے "محفوظ" ہیں۔ پچاسی این کی کم از کم انٹیگرل ویلیو ہے۔ لہذا 4 بائٹس کی کسی بھی ترتیب کو 5 علامتوں کے طور پر انکوڈ کیا جا سکتا ہے، جب تک کہ کم از کم 85 الگ الگ علامتیں دستیاب ہوں۔ (پانچ ریڈکس-85 ہندسے 0 سے 4 437 053 124 تک کے انٹیجرز کی نمائندگی کر سکتے ہیں، جو تمام 4,294,967,296 ممکنہ 4-بائٹ ترتیبات کی نمائندگی کرنے کے لیے کافی ہیں۔) انکوڈنگ کرتے وقت، 4 بائٹس کے ہر گروپ کو 32 بٹ بائنری نمبر کے طور پر لیا جاتا ہے، سب سے اہم بائٹ پہلے (ASCII85 ایک بگ اینڈین کنونشن استعمال کرتا ہے)۔ اسے بار بار 85 سے تقسیم کرکے اور بقیہ کو لے کر 5 ریڈکس-85 ہندسوں میں تبدیل کیا جاتا ہے۔ پھر ہر ہندسوں (پھر، سب سے اہم پہلے) کو 33 کا اضافہ کرکے ASCII پرنٹ ایبل کردار کے طور پر انکوڈ کیا جاتا ہے، جس سے ASCII حروف 33 (!) ملتے ہیں۔ 117 (یو) کے ذریعے۔ چونکہ آل زیرو ڈیٹا کافی عام ہے، اس لیے ڈیٹا کمپریشن کی خاطر ایک رعایت دی جاتی ہے، اور آل زیرو گروپ کو اس کے بجائے ایک حرف z کے طور پر انکوڈ کیا جاتا ہے! !!!!! حروف کے گروپ جو اس سے زیادہ قیمت پر ڈی کوڈ کرتے ہیں (ایس 8 ڈبلیو-کے طور پر انکوڈ شدہ!) یہ ڈیکوڈنگ کی غلطی کا سبب بنے گا، جیسا کہ گروپ کے وسط میں زیڈ حروف ہوں گے۔ حروف کے درمیان سفید جگہ کو نظر انداز کر دیا جاتا ہے اور لائن کی لمبائی کی حدود کو ایڈجسٹ کرنے کے لیے کہیں بھی ہو سکتا ہے۔ حدود اصل تفصیلات صرف ایک اسٹریم کی اجازت دیتی ہیں جو 4 بائٹس کا ایک سے زیادہ ہو۔ انکوڈ شدہ ڈیٹا میں ایسے حروف ہو سکتے ہیں جو بہت سی پروگرامنگ زبانوں میں اور کچھ ٹیکسٹ پر مبنی پروٹوکول میں خاص معنی رکھتے ہیں، جیسے کہ لیفٹ اینگل بریکٹ <، بیک سلیش \، اور سنگل اور ڈبل کوٹس '& "۔ دیگر بیس-85 انکوڈنگز جیسے Z85 اور سورس کوڈ میں محفوظ ہونے کے لیے ڈیزائن کیے گئے ہیں۔ تاریخ btoa ورژن اصل btoa پروگرام ہمیشہ مکمل گروپوں کو انکوڈ کرتا ہے (ضرورت کے مطابق ماخذ کو پیڈنگ کرتا ہے)، "xbtoa Begin" کی سابقہ لائن کے ساتھ، اور "xbtoa End" کی لاحقہ لائن کے ساتھ، اس کے بعد اصل فائل کی لمبائی (اعشاریہ اور ہیکساڈیسیمل میں) اور تین 32 بٹ چیکسم ہوتے ہیں۔ ڈیکوڈر کو فائل کی لمبائی استعمال کرنے کی ضرورت ہے تاکہ یہ دیکھا جا سکے کہ گروپ کا کتنا حصہ پیڈنگ کر رہا تھا۔ btoa انکوڈنگ کے لیے ابتدائی تجویز میں ایک انکوڈنگ حروف تہجی کا استعمال کیا گیا جو ASCII خلائی کردار سے شروع ہو کر "t" کے ذریعے شامل تھا، لیکن اس کی جگہ "!" کے انکوڈنگ حروف تہجی نے لے لی۔ "یو" سے بچنے کے لیے "کچھ میلرز کے ساتھ مسائل (ٹریلنگ خالی جگہوں کو ہٹانا)"۔ اس پروگرام نے آل زیرو گروپ کے لیے خصوصی "زیڈ" مختصر شکل بھی متعارف کرائی۔ ورژن 4 میں تمام ASCII خلائی حروف (0x202020) کے گروپ کے لیے "y" رعایت شامل کی گئی۔ ZMODEM ورژن "ZMODEM پیک-7 انکوڈنگ" 4 آکٹٹس کے گروپوں کو 5 پرنٹ ایبل ASCII حروف کے گروپوں میں اسی طرح، یا ممکنہ طور پر اسی طرح سے انکوڈ کرتا ہے جیسے ASCII85 کرتا ہے۔ جب ZMODEM پروگرام 7 بٹ ڈیٹا چینلز پر پہلے سے کمپریسڈ 8 بٹ ڈیٹا فائلیں بھیجتا ہے، تو یہ "ZMODEM پیک-7 انکوڈنگ" کا استعمال کرتا ہے۔ ایڈوب ورژن ایڈوب نے بنیادی btoa انکوڈنگ کو اپنایا، لیکن معمولی تبدیلیوں کے ساتھ، اور اسے ASCII85 کا نام دیا۔ استعمال شدہ حروف ASCII حروف 33 (!) ہیں۔ 117 کے ذریعے (یو) بشمول (بیس-85 ہندسوں کی نمائندگی کرنے کے لیے 0 سے 84 تک)، حرف زیڈ کے ساتھ (32 بٹ 0 ویلیو کی نمائندگی کرنے کے لیے ایک خاص معاملے کے طور پر)، اور سفید جگہ کو نظر انداز کر دیا جاتا ہے۔ ایڈوب ایک ASCII85-انکوڈڈ سٹرنگ کے اختتام کو نشان زد کرنے کے لیے ڈیلیمیٹر "~>" کا استعمال کرتا ہے اور حتمی گروپ کو کاٹ کر لمبائی کی نمائندگی کرتا ہے: اگر سورس بائٹس کے آخری بلاک میں 4 بائٹس سے کم ہیں، تو بلاک کو انکوڈنگ سے پہلے 3 نل بائٹس کے ساتھ پیڈ کیا جاتا ہے۔ انکوڈنگ کے بعد، زیادہ سے زیادہ بائٹس جو پیڈنگ کے طور پر شامل کیے گئے تھے آؤٹ پٹ کے آخر سے ہٹا دیے جاتے ہیں۔ ڈیکوڈنگ کرتے وقت ریورس کا اطلاق ہوتا ہے: آخری بلاک کو ASCII85 کردار u کے ساتھ 5 بائٹس پر پیڈ کیا جاتا ہے، اور زیادہ سے زیادہ بائٹس جو پیڈنگ کے طور پر شامل کیے گئے تھے آؤٹ پٹ کے آخر سے خارج کردیئے جاتے ہیں (مثال دیکھیں)۔ پیڈنگ من مانی نہیں ہے۔ بائنری سے بیس 64 میں تبدیل کرنا صرف بٹس کو دوبارہ منظم کرتا ہے اور انہیں یا ان کی ترتیب کو تبدیل نہیں کرتا ہے (بائنری میں زیادہ بٹ بیس 64 کی نمائندگی میں کم بٹس کو متاثر نہیں کرتا ہے)۔ بائنری نمبر کو بیس 85 میں تبدیل کرنے میں (85 دو کی طاقت نہیں ہے) ہائی بٹس لو آرڈر بیس 85 ہندسوں کو متاثر کرتے ہیں اور اس کے برعکس۔ ڈیکوڈنگ میں بیس 85 ویلیو ہائی (ہمارے ساتھ) کو انکوڈنگ اور پیڈنگ کرتے ہوئے بائنری لو (زیرو بٹس کے ساتھ) کو پیڈنگ کرنا اس بات کی یقین دہانی کراتا ہے کہ ہائی آرڈر بٹس محفوظ ہیں (بائنری میں زیرو پیڈنگ کافی گنجائش دیتی ہے تاکہ ایک چھوٹا اضافہ پھنس جائے اور ہائی بٹس میں کوئی "کیری" نہ ہو)۔ ASCII85-انکوڈڈ بلاکس میں، وائٹ اسپیس اور لائن بریک حروف کہیں بھی موجود ہو سکتے ہیں، بشمول 5 حروف والے بلاک کے وسط میں، لیکن انہیں خاموشی سے نظر انداز کیا جانا چاہیے۔ ایڈوب کی تفصیلات Y مستثنی کی حمایت نہیں کرتی ہیں۔ ASCII85 کی مثال تھامس ہوبز کی لیویااتھن کا ایک اقتباس: انسان کو نہ صرف اس کی عقل سے، بلکہ دوسرے جانوروں سے اس واحد جذبے سے ممتاز کیا جاتا ہے، جو کہ دماغ کی خواہش ہے، کہ علم کی مسلسل اور ناقابل تسخیر نسل میں خوشی کی استقامت سے، کسی بھی جسمانی خوشی کی مختصر شدت سے تجاوز کر جاتا ہے۔ اگر اسے ابتدائی طور پر US-ASCII کا استعمال کرتے ہوئے انکوڈ کیا جاتا ہے، تو اسے ASCII85 میں اس طرح دوبارہ انکوڈ کیا جا سکتا ہے: 9jqo ^ BLbD-BleB1DJ + * + F (f, q/0JhKF <GL> Cj @. 4Gp $d7F!, L7 @<6 @)/0JDEF <G% <+ EV: 2F!, O <DJ + *۔ @<* K0 @<6L (Df-\0Ec5e ؛ DffZ (EZee.Bl.9pF "AGXBPCsi + DGM> @3BB F * & OCAfu2/AKYi (DIb: @FD، *) + C] U = @3BN #EcYf8ATD3s @q? d $AftVqCH [NqF <G: 8 + EV:. + Cf>-FD5W8ARlolDial (DId <j @<? 3r @: F% a + D58 'ATD4 $Bl@l3De:،-DJs' 8ARoFb / (E, 9) oF * 2M7/c چونکہ آخری 4-ٹپل نامکمل ہے، اس لیے اسے تین صفر بائٹس کے ساتھ پیڈ کیا جانا چاہیے: چونکہ پیڈنگ کے تین بائٹس شامل کرنے تھے، اس لیے تین آخری حروف 'YkO' کو آؤٹ پٹ سے خارج کر دیا جاتا ہے۔ ڈیکوڈنگ الٹا کی جاتی ہے، سوائے اس کے کہ آخری 5-ٹپل کو 'یو' حروف کے ساتھ پیڈ کیا جاتا ہے: چونکہ ان پٹ کو تین 'یو' بائٹس کے ساتھ پیڈ کرنا پڑتا تھا، اس لیے آؤٹ پٹ کے آخری تین بائٹس کو نظر انداز کر دیا جاتا ہے اور ہم اصل پیریڈ کے ساتھ ختم ہو جاتے ہیں۔ ان پٹ جملے میں مسلسل 4 صفر بائٹس نہیں ہوتے ہیں، لہذا مثال میں 'z' مخفف کا استعمال نہیں دکھایا گیا ہے۔ مطابقت ASCII85 انکوڈنگ 7 بٹ اور 8 بٹ ایم آئی ایم ای کے ساتھ مطابقت رکھتی ہے، جبکہ بیس 64 سے کم اوور ہیڈ ہوتی ہے۔ ASCII85 کا ایک ممکنہ مطابقت کا مسئلہ یہ ہے کہ اس کے استعمال کردہ کچھ حروف مارک اپ زبانوں جیسے XML یا SGML میں اہم ہیں۔ ان دستاویزات میں اے ایس سی آئی آئی 85 ڈیٹا کو شامل کرنے کے لیے، اقتباس، زاویہ بریکٹ اور ایمپرسینڈ سے بچنا ضروری ہو سکتا ہے۔ آر ایف سی 1924 ورژن یکم اپریل 1996 کو شائع ہوا، معلوماتی: رابرٹ ایلز کی طرف سے "آئی پی وی 6 پتے کی ایک کمپیکٹ نمائندگی" آئی پی وی 6 پتے کی بیس-85 انکوڈنگ کا مشورہ دیتی ہے۔ یہ اوپر استعمال کی گئی اسکیم سے مختلف ہے کہ وہ 85 ASCII حروف کا ایک مختلف سیٹ تجویز کرتا ہے، اور 128 بٹ نمبر پر تمام ریاضی کرنے کی تجویز کرتا ہے، اسے چار 32 بٹ گروپوں میں توڑنے کے بجائے ایک 20 ہندسوں کے بیس-85 نمبر (اندرونی وائٹ اسپیس کی اجازت نہیں ہے) میں تبدیل کرتا ہے۔ مجوزہ کریکٹر سیٹ، ترتیب میں، 0-9، A-Z، a-Z، اور پھر 23 حروف! #$% & () * +-؛ <=>؟ @^ _ '{|} ~ ہے۔ سب سے زیادہ ممکنہ نمائندگی والا پتہ، 2128−1 = 74 × 8519 + 53 × 8518 + 5 × 8517 +.، کو = r54lj & NUUO ~ Hi% c2ym0 کے طور پر انکوڈ کیا جائے گا۔ اس کریکٹر سیٹ میں حروف ""،./: [\] کو خارج کر دیا گیا ہے، جو اسے جے ایس او این سٹرنگز میں استعمال کے لیے موزوں بناتا ہے (جہاں "اور" فرار کی ضرورت ہوگی)۔ تاہم، ایس جی ایم ایل پر مبنی پروٹوکول کے لیے، خاص طور پر ایکس ایم ایل سمیت، سٹرنگ کے فرار کی اب بھی ضرورت پڑ سکتی ہے (<,> اور & کو ایڈجسٹ کرنے کے لیے)۔ مختلف انکوڈنگ الگورتھم پوسٹ اسکرپٹ اسٹینڈرڈ انکوڈنگ حوالہ جات بیرونی لنکس بیس ای 91 پوسٹ اسکرپٹ لینگویج ریفرنس (ایڈوب) کے موازنہ کے لیے بیس 32 بیس 36 بیس 64 بائنری ٹو ٹیکسٹ انکوڈنگ بھی دیکھیں-ASCII85Encode فلٹر بائنری ٹو ٹیکسٹ انکوڈنگ فارمیٹس دیکھیں۔