အင်တာနက်ကိုသတင်းအချက်အလက်အဝေးပြေးလမ်းမကြီးဖြစ်ပါသည်လျှင်, အီးမေးလ်လမ်းကြောင်းကျဉ်းမြောင်းချောက်ဖြစ်ပါတယ်။ သာအလွန်သေးငယ်တဲ့လှည်းကူးသွားနိုင်ပါတယ်။
အီးမေးလ်က၏သယ်ယူပို့ဆောင်ရေးစနစ်ကသာလွင်ပြင် ASCII စာသားဒီဇိုင်းပြုလုပ်ထားသည်။ အခြားဘာသာစကားများသို့မဟုတ်မတရားဖိုင်တွေအတွက်စာသားမပို့ပါရန်ကြိုးစားနေသည့်ချောက်မှတစ်ဆင့်ထရပ်ကားရတဲ့ကဲ့သို့ဖြစ်၏။
ဘယ်လိုကြီး Truck ကားမြစ်တို့သည်တဆင့်သွားပါသလား?
ထိုအခါသင်မည်သို့သေးငယ်တဲ့ချောက်မှတစ်ဆင့်ကြီးမားတဲ့ထရပ်ကားပေးပို့သလဲ? သငျသညျ, တဦးကိုအဆုံးအပေါ်အပိုင်းပိုင်းကယူချောက်ကနေတဆင့်အပိုငျးပိုငျးသယ်ယူပို့ဆောင်နှငျ့အခွားသောအဆုံးအပျေါပိုငျးပိုငျးကနေထရပ်ကားပြန်ဆောက်ဖို့ရှိသည်။
သင်တစ်ဦးပေးပို့လာသောအခါတူညီဖြစ်ပျက် အီးမေးလ်ကနေတဆင့် file ကို attachment ကို ။ အဆိုပါ binary data တွေကိုကုဒ်သွင်းအဖြစ်လူသိများနေတဲ့လုပ်ငန်းစဉ်များတွင်ပြဿနာများမရှိဘဲအီးမေးလ်ထဲတွင်ပို့ဆောင်နိုင်သည့် ASCII စာသား, မှအသွင်ပြောင်းဖြစ်ပါတယ်။ လက်ခံသူရဲ့အဆုံးတွင်, ဒေတာဝှက်တာဖြစ်ပါတယ်နှင့်မူရင်းဖိုင်ကိုပြန်လည်တည်ဆောက်ထားပါသည်။
လွင်ပြင် ASCII text ကဲ့သို့မတရားဒေတာကုဒ်သွင်းတစ်ခုမှာနည်းလမ်း Base64 ဖြစ်ပါတယ်။ ဒါဟာနေဖြင့်အလုပ်ခန့်သည့်နည်းစနစ်တစ်ခုဖြစ်သည် MIME စံ ထက်အခြား data ပို့ စာသား ။
အဆိုပါကယ်ဆယ်ရေးမှ Base64
Base64 encoding ကတစ်ဦးချင်းစီရှစ်-bits ပါဝင်သည်ဟုသုံး bytes ကြာ, နှင့် ASCII စံလေး print ထုတ်လို့ရတဲ့ဇာတ်ကောင်အဖြစ်သူတို့ကိုကိုယ်စားပြုသည်။ ဒါဟာမရှိမဖြစ်လိုအပ်တဲ့နှစ်ခုခြေလှမ်းများအတွက်ပါဘူး။
ပထမဦးဆုံးခြေလှမ်းကိုခြောက်-bits လေးနံပါတ်များကိုမှသုံး bytes ပြောင်းဖို့ဖြစ်ပါတယ်။ အဆိုပါ ASCII စံစီဇာတ်ကောင်ခုနစ်ခု-bits ပါဝင်ပါသည်။ Base64 သာကုဒ်သွင်းဒေတာကို print ထုတ်လို့ရတဲ့နှင့် humanly ဖတ်လို့ရအောင်ဖြစ်ပါတယ်သေချာစေရန် 6 bits သည် (2 ^ 6 = 64 ဇာတ်ကောင်နဲ့သက်ဆိုင်တဲ့) ကိုအသုံးပြုပါတယ်။ ASCII အတွက်ရရှိနိုင်အထူးဇာတ်ကောင်အဘယ်သူအားမျှအသုံးပြုကြသည်။
အဆိုပါ 64 ဇာတ်ကောင် (ဤအရပ်မှနာမတော်ကိုအမှီ ပြု. Base64) 10 ဂဏန်း, 26 စာလုံးအသေးစာလုံးများ, 26 ကြီးဇာတ်ကောင်အဖြစ် '+' နဲ့ '/' ဖြစ်ကြသည်။
ဥပမာအားဖြင့်သုံး bytes 155, 162 နဲ့ 233 ရောက်နေတယ်ဆိုရင်, သက်ဆိုင်ရာ (နှင့်ကြောက်မက်ဖွယ်) နည်းနည်းစီးအလှည့်အတွက် 6-bit နဲ့တန်ဖိုးများကို 38, 58, 11 နဲ့ 41 မှကိုက်ညီသည့် 100110111010001011101001 ဖြစ်ပါသည်။
ဤရွေ့ကားနံပါတ်များ Base64 encoding ကစားပွဲပေါ်မှာသုံးပြီးဒုတိယခြေလှမ်းအတွက် ASCII ဇာတ်ကောင်အဖြစ်ပြောင်းလဲနေကြသည်။ ကျွန်တော်တို့ရဲ့ဥပမာ၏ 6-bit နဲ့တန်ဖိုး ASCII sequence ကို "m6Lp" ကိုဘာသာပြန်ဆို။
- 155 -> 10011011
- 162 -> 10100010
- 233 -> 11101001
- 100110 -> 38
- 111010 -> 58
- 001011 -> 11
- 101001 -> 41
- 38 -> မီတာ
- 58 -> 6
- 11 -> L ကို
- 41 -> p
ဒါက Two-ခြေလှမ်းဖြစ်စဉ်ကို encoded ဖြစ်ကြောင်း bytes ၏တပြင်လုံးကို sequence ကိုအသုံးချခြင်းဖြစ်သည်။ အဆိုပါ encoded data တွေကိုစနစ်တကျပုံနှိပ်နိုင်ပြီးမည်သည့်မေးလ်ဆာဗာ၏လိုင်းအရှည်န့်သတ်ချက်ထက်မပိုပါဘူးသေချာစေရန်, NEWLINE ဇာတ်ကောင် 76 ဇာတ်ကောင်ကိုအောက်တွင်လိုင်းအရှည်ကိုစောင့်ရှောက်ရန်ဖြည့်စွက်ထားပါသည်။ အဆိုပါ NEWLINE ဇာတ်ကောင်အားလုံးအခြားဒေတာနဲ့တူ encoded နေကြသည်။
နောက်ဆုံးအခြေအနေဟာဖြေရှင်းရေး
အဆိုပါ encoding ကလုပ်ငန်းစဉ်၏အဆုံးမှာကျနော်တို့ပြဿနာတစ်ခုထဲသို့ပြေးပေလိမ့်မည်။ bytes ဖြင့်မူရင်းအချက်အလက်များ၏အရွယ်အစားသုံးဦး၏မျိုးစုံသည်ဆိုပါက, အရာအားလုံးဒဏ်ငွေအလုပ်လုပ်ပါတယ်။ ဒါဟာမဖြစ်လျှင်, ငါတို့သည်တစ်ဦးသို့မဟုတ်နှစ်ဦးကို 8-bit နဲ့ bytes အတူတက်အဆုံးသတ်ပေလိမ့်မည်။ သငျ့လျြောသော encoding က, ကြှနျုပျတို့သို့သော်အတိအကျသုံး bytes လိုအပ်ပါတယ်။
ဒီဖြေရှင်းချက် 3-byte အုပ်စုတစ်စုကိုဖန်တီးရန် '' 0 '' ၏တန်ဖိုးနှင့်အတူအလုံအလောက် bytes append ရန်ဖြစ်ပါသည်။ နှစ်ဦးကယင်းသို့တန်ဖိုးများကိုကျနော်တို့အချက်အလက်များ၏တဦးတည်းအပိုက byte ရှိပါက, နှစျဦးအပို bytes များအတွက်ဖြည့်တွဲနေသည်ဖြည့်တွဲနေကြသည်။
၏သင်တန်းအဲဒီအတု Trail '0 ရဲ့အောက်ကကုဒ်ပြောင်းစားပွဲပေါ်မှာသုံးပြီး encoded မရနိုင်ပါ။ သူတို့ကတစ်ဦး 65 ဇာတ်ကောင်ကကိုယ်စားပြုထားရပါမည်။
အဆိုပါ Base64 padding ကိုဇာတ်ကောင် '=' 'ဖြစ်ပါတယ်။ သဘာဝကျကျ, ကသာအစဉ်အဆက်ကုဒ်သွင်းအချက်အလက်များ၏အဆုံးမှာပေါ်လာနိုင်ပါတယ်။
Base64 Encoding ဇယား
အဘိုး | char | အဘိုး | char | အဘိုး | char | အဘိုး | char |
---|---|---|---|---|---|---|---|
0 င် | တစ်ဦးက | 16 | မေး | 32 | ဆ | 48 | w |
1 | B က | 17 | R ကို | 33 | ဇ | 49 | x က |
2 | ကို C | 18 | S က | 34 | ကိုယ့် | 50 | y က |
3 | : D | 19 | T က | 35 | ည | 51 | z |
4 | E ကို | 20 | ဦး | 36 | ဋ | 52 | 0 င် |
5 | F ကို | 21 | V ကို | 37 | ဌ | 53 | 1 |
6 | , G | 22 | W က | 38 | မီတာ | 54 | 2 |
7 | H ကို | 23 | X ကို | 39 | ဎ | 55 | 3 |
8 | ငါ | 24 | Y က | 40 | o | 56 | 4 |
9 | J ကို | 25 | Z ကို | 41 | p | 57 | 5 |
10 | K သည် | 26 | တစ်ဦး | 42 | က q | 58 | 6 |
11 | L ကို | 27 | ခ | 43 | r | 59 | 7 |
12 | M က | 28 | က c | 44 | s ကို | 60 | 8 |
13 | N ကို | 29 | ဃ | 45 | t ကို | 61 | 9 |
14 | အို | 30 ရက် | အီး | 46 | ဦး | 62 | + |
15 | : P | 31 | f | 47 | v | 63 | / |