亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何將字節編碼的字符串轉換為先前的字符串值?

如何將字節編碼的字符串轉換為先前的字符串值?

C#
料青山看我應如是 2022-12-31 13:01:05
我有一個文件里面有這個dGVzdA==,dGVzdA==是 byte[] 中的單詞測試轉換。之后我想讓這個詞再次進行字符串測試所以我這樣做:[HttpPost("[Action]")]public async Task<IActionResult> ExtractLicenseData(IFormFile file){    string fileContents ;    using (var stream = file.OpenReadStream())    {        using (var reader = new StreamReader(stream))        {            fileContents = await reader.ReadToEndAsync();        }    }    string test = Encoding.ASCII.GetString(fileContents); // error    return BadRequest(test);}但是當我嘗試這樣做時string test = Encoding.ASCII.GetString(fileContents);出現錯誤:無法從“字符串”轉換為“字節[]”恢復:我有我的字符串dGVzdA==我想最終在我的原始字符串test中轉換它。/!\ 從測試到dGVzdA==我這樣做Encoding.ASCII.GetBytes("test")。
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

dGVzdA==是byte[]中的單詞test convert。

不,dGVzdA==是字節 0x74、0x65、0x73、0x74 的 base64 編碼表示,而這又是文本“test”的 ASCII 編碼表示。

所以如果你想要一個內容為0x74、0x65、0x73、0x74的字節數組,你只需要進行base64解碼:

byte[] bytes = Convert.FromBase64String(fileContents);

如果您隨后想通過應用 ASCII 編碼返回字符串,您將使用:

string text = Encoding.GetString(bytes);

但是,如果文件內容肯定是 ASCII 文本,那么最好首先避免使用 base64 部分。目前尚不清楚這是從哪里來的。

testdGVzdA==我這樣做Encoding.ASCII.GetBytes("test")。

不,你不知道。Encoding.ASCII.GetByte("test")返回一個包含字節 0x74、0x65、0x73、0x74 的字節數組,而dGVzdA==是通過 base64 編碼將該字節數組轉換為字符串的結果。


查看完整回答
反對 回復 2022-12-31
?
猛跑小豬

TA貢獻1858條經驗 獲得超8個贊

因為它已經是一個string,reader.ReadToEndAsync()將讀取整個文件直到最后并將它返回到一個string.


你不需要做Encoding.ASCII.GetString(fileContents);,檢查fileContents后:


using (var reader = new StreamReader(stream))

{

    fileContents = await reader.ReadToEndAsync();

    // here

}

現在在Convert.FromBase64String(fileContents);那里你會得到你的字節而不是從字節中獲取你的字符串。


查看完整回答
反對 回復 2022-12-31
  • 2 回答
  • 0 關注
  • 128 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號