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

我有一个文件里面有这个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")。


料青山看我应如是
浏览 92回答 2
2回答

慕雪6442864

dGVzdA==是byte[]中的单词test convert。不,dGVzdA==是字节 0x74、0x65、0x73、0x74 的 base64 编码表示,而这又是文本“test”的 ASCII 编码表示。所以如果你想要一个内容为0x74、0x65、0x73、0x74的字节数组,你只需要进行base64解码:byte[]&nbsp;bytes&nbsp;=&nbsp;Convert.FromBase64String(fileContents);如果您随后想通过应用 ASCII 编码返回字符串,您将使用:string&nbsp;text&nbsp;=&nbsp;Encoding.GetString(bytes);但是,如果文件内容肯定是 ASCII 文本,那么最好首先避免使用 base64 部分。目前尚不清楚这是从哪里来的。从test到dGVzdA==我这样做Encoding.ASCII.GetBytes("test")。不,你不知道。Encoding.ASCII.GetByte("test")返回一个包含字节 0x74、0x65、0x73、0x74 的字节数组,而dGVzdA==是通过 base64 编码将该字节数组转换为字符串的结果。

猛跑小猪

因为它已经是一个string,reader.ReadToEndAsync()将读取整个文件直到最后并将它返回到一个string.你不需要做Encoding.ASCII.GetString(fileContents);,检查fileContents后:using (var reader = new StreamReader(stream)){&nbsp; &nbsp; fileContents = await reader.ReadToEndAsync();&nbsp; &nbsp; // here}现在在Convert.FromBase64String(fileContents);那里你会得到你的字节而不是从字节中获取你的字符串。
打开App,查看更多内容
随时随地看视频慕课网APP