[英]base64string to string back to base64string
我正在嘗試將base64string轉換為字符串然后再轉換回base64string的實驗,但是,我沒有得到原始的base64string:
String profilepic = "/9j/4AAQ";
string Orig = System.Text.Encoding.Unicode.GetString(Convert.FromBase64String(profilepic));
string New = Convert.ToBase64String(System.Text.Encoding.Unicode.GetBytes(Orig));
字符串New返回“ / f // 4AAQ”。
為什么會這樣呢?
你做錯了。 您應該按照以下步驟進行操作:
namespace ConsoleApplication1
{
using System;
using System.Text;
class Program
{
static void Main(string[] args)
{
string profilepic = "/9j/4AAQ";
string New = Convert.ToBase64String(Encoding.Unicode.GetBytes(profilepic));
byte[] raw = Convert.FromBase64String(New); // unpack the base-64 to a blob
string s = Encoding.Unicode.GetString(raw); // outputs /9j/4AAQ
Console.ReadKey();
}
}
}
您假設示例中以base64編碼的二進制數據包含UTF-16編碼的消息。 事實並非如此, System.Text.Encoding.Unicode
類可能會通過丟棄不了解的字節來更改內容。
因此,對返回的字符串的UTF-16編碼的字節流進行base64編碼的結果可能不會產生相同的輸出。
您的輸入字符串包含二進制序列0xff 0xd8 0xff 0xe0 0x00 0x10(以十六進制表示)。 將此解釋為UTF-16LE(與System.Text.Encoding.Unicode
使用),第一個字符將是0xffd8,但會以0xfffd的形式放置在字符串中,這說明了更改。
我嘗試使用Encoding.Unicode
, Encoding.UTF8
和Encoding.Default
對其進行解碼,但是它們都不產生任何可理解的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.