如何将以字节为单位的in编码字符串转换为先前的字符串值?

use*_*293 0 c# asp.net-core-webapi

我里面有一个文件dGVzdA ==dGVzdA ==是单词test convert in 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);
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做时,string test = Encoding.ASCII.GetString(fileContents);我出现了错误:

无法从“字符串”转换为“字节[]”

恢复 :

我有我的字符串dGVzdA ==我想最终在原始字符串测试中将其转换。

/!\要从测试转到dGVzdA ==,请执行此操作Encoding.ASCII.GetBytes("test")

Jon*_*eet 6

dGVzdA ==是单词test convert in byte []。

不,dGVzdA==是字节0x74、0x65、0x73、0x74 ...的base64编码表示形式,而该文本又是文本“ test”的ASCII编码表示形式。

因此,如果您想要一个内容为0x74、0x65、0x73、0x74的字节数组,则只需执行base64解码即可:

byte[] bytes = Convert.FromBase64String(fileContents);
Run Code Online (Sandbox Code Playgroud)

然后,如果您想通过应用ASCII编码返回到字符串,则可以使用:

string text = Encoding.GetString(bytes);
Run Code Online (Sandbox Code Playgroud)

但是,如果无论如何文件内容肯定都是ASCII文本,那么最好避免使用base64部分会更好。目前尚不清楚其来源。

test开始dGVzdA==我做这个Encoding.ASCII.GetBytes("test")

不,你没有。Encoding.ASCII.GetByte("test")返回一个带有字节0x74、0x65、0x73、0x74的字节数组,而这dGVzdA==是通过base64编码将该字节数组转换为字符串的结果。