第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我們使用Base64?

為什么我們使用Base64?

冉冉說 2019-11-21 12:46:24
當需要對二進制數(shù)據(jù)進行編碼時,通常需要使用Base64編碼方案,該二進制數(shù)據(jù)需要在旨在處理文本數(shù)據(jù)的媒體上存儲和傳輸。這是為了確保數(shù)據(jù)在傳輸過程中保持完整而無需修改。但是,不是因為我們的機器存儲的內(nèi)存始終以二進制形式存儲/傳輸數(shù)據(jù),而是僅以二進制形式存儲/傳輸數(shù)據(jù)嗎?因此,無論您編碼位模式010011010110000101101110為ManASCII或如TWFu為Base64,你最終將存儲相同的位模式。如果最終編碼是用零和一表示的,并且每臺機器和媒體都可以處理它們,那么將數(shù)據(jù)表示為ASCII還是Base64有什么關(guān)系呢?“旨在處理文本數(shù)據(jù)的媒體”是什么意思?他們可以處理二進制=>他們可以處理任何東西。謝謝大家,我想我現(xiàn)在明白了。當我們發(fā)送數(shù)據(jù)時,我們不能確定數(shù)據(jù)將以我們期望的格式解釋。因此,我們發(fā)送雙方都可以理解的以某種格式(例如Base64)編碼的數(shù)據(jù)。這樣,即使發(fā)送方和接收方對相同內(nèi)容的解釋不同,但由于它們在編碼格式上達成共識,因此不會錯誤地解釋數(shù)據(jù)。以Mark Byers為例如果我要發(fā)送Helloworld!一種方法是像ASCII一樣發(fā)送72 101 108 108 111 10 119 111 114 108 100 33但是字節(jié)10可能無法在另一端正確解釋為換行符。因此,我們使用ASCII的子集對其進行編碼,如下所示83 71 86 115 98 71 56 115 67 110 100 118 99 109 120 107 73 61 61即使接收器碰巧對其余字符集有不同的解釋,這也會以相同信息量傳輸更多數(shù)據(jù)為代價,從而確保接收器可以按預(yù)期方式解碼數(shù)據(jù)。
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經(jīng)驗 獲得超4個贊

您的第一個錯誤是認為ASCII編碼和Base64編碼可以互換。他們不是。它們用于不同的目的。


使用ASCII編碼文本時,您將從文本字符串開始并將其轉(zhuǎn)換為字節(jié)序列。

在Base64中對數(shù)據(jù)進行編碼時,您將從字節(jié)序列開始并將其轉(zhuǎn)換為文本字符串。

要了解為什么首先需要Base64,我們需要一些計算歷史。


計算機以二進制形式(0和1)進行通信,但是人們通常希望與更豐富的表單數(shù)據(jù)(例如文本或圖像)進行通信。為了在計算機之間傳輸此數(shù)據(jù),首先必須將其編碼為0和1,然后發(fā)送,然后再次解碼。以文本為例-有許多不同的方法可以執(zhí)行此編碼。如果我們都可以同意一個編碼,這會簡單得多,但不幸的是事實并非如此。


最初,創(chuàng)建了許多不同的編碼(例如Baudot碼),每個字符使用不同的位數(shù),直到最終ASCII成為每個字符7位的標準。但是,大多數(shù)計算機將二進制數(shù)據(jù)存儲在每個字節(jié)由8位組成的字節(jié)中,因此ASCII不適合傳輸此類數(shù)據(jù)。有些系統(tǒng)甚至?xí)脸罡呶弧4送?,跨系統(tǒng)的行尾編碼的差異意味著有時還會修改ASCII字符10和13。


為了解決這些問題,引入了Base64編碼。這樣,您就可以將ribribry字節(jié)編碼為已知可以安全發(fā)送而不損壞的字節(jié)(ASCII字母數(shù)字字符和幾個符號)。缺點是使用Base64編碼消息會增加其長度-每3個字節(jié)的數(shù)據(jù)就會編碼為4個ASCII字符。


發(fā)送文本可靠,你可以先編碼,使用您的選擇(例如UTF-8),然后的文本編碼字節(jié)后的Base64編碼生成的二進制數(shù)據(jù)轉(zhuǎn)換為文本字符串,它是安全發(fā)送編碼為ASCII。接收者將不得不逆轉(zhuǎn)此過程以恢復(fù)原始消息。當然,這要求接收者知道使用了哪種編碼,并且該信息通常需要單獨發(fā)送。


從歷史上看,它已用于對電子郵件中的二進制數(shù)據(jù)進行編碼,其中電子郵件服務(wù)器可能會修改行尾。一個更現(xiàn)代的示例是使用Base64編碼將圖像數(shù)據(jù)直接嵌入HTML源代碼中。在這里,有必要對數(shù)據(jù)進行編碼,以避免像“ <”和“>”這樣的字符被解釋為標簽。


這是一個工作示例:


我希望發(fā)送兩行短信


你好

世界!

如果以ASCII(或UTF-8)格式發(fā)送,則如下所示:


72 101 108 108 111 10 119 111 114 108 100 33

字節(jié)10在某些系統(tǒng)中已損壞,因此我們可以將這些字節(jié)以64為基數(shù)編碼為Base64字符串:


SGVsbG8sCndvcmxkIQ ==

使用ASCII編碼時,如下所示:


83 71 86 115 98 71 56 115 67 110 100 118 99 109 120 107 73 61 61

這里的所有字節(jié)都是已知的安全字節(jié),因此,幾乎沒有任何系統(tǒng)會破壞此消息的機會。我可以發(fā)送此消息而不是原始消息,然后讓接收者撤消該過程以恢復(fù)原始消息。


查看完整回答
反對 回復(fù) 2019-11-21
?
長風(fēng)秋雁

TA貢獻1757條經(jīng)驗 獲得超7個贊

用XML編碼二進制數(shù)據(jù)

假設(shè)您要在XML文檔中嵌入幾個圖像。圖像是二進制數(shù)據(jù),而XML文檔是文本。但是XML無法處理嵌入式二進制數(shù)據(jù)。你是怎么做到的?


一種選擇是將圖像編碼為base64,將二進制數(shù)據(jù)轉(zhuǎn)換為XML可以處理的文本。


代替:


<images>

  <image name="Sally">{binary gibberish that breaks XML parsers}</image>

  <image name="Bobby">{binary gibberish that breaks XML parsers}</image>

</images>

你做:


<images>

  <image name="Sally" encoding="base64">j23894uaiAJSD3234kljasjkSD...</image>

  <image name="Bobby" encoding="base64">Ja3k23JKasil3452AsdfjlksKsasKD...</image>

</images>

XML解析器將能夠正確解析XML文檔并提取圖像數(shù)據(jù)。


查看完整回答
反對 回復(fù) 2019-11-21
  • 3 回答
  • 0 關(guān)注
  • 1029 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號