我如何“ASCII装甲”;我的MemoryStream

本文关键字:我的 MemoryStream 装甲 ASCII | 更新日期: 2023-09-27 18:19:09

我如何ASCII装甲内存流?ASCII装甲是将二进制数据编码为可打印的ASCII字符串的过程。例如,这在加密中使用。

在c#中是否有任何标准的方法来做到这一点,也具有解码支持?像API?否则,怎么能做到呢?

我如何“ASCII装甲”;我的MemoryStream

您几乎应该始终使用Base64(或十六进制)来表示可打印文本中的任意二进制数据:

byte[] binary = ...;
string text = Convert.ToBase64String(binary);
...
string text = ...;
byte[] binary = Convert.FromBaseString(text);

您可以使用MemoryStream.ToArray()MemoryStream中的所有数据转换为字节数组。以流方式执行此操作将需要更多的工作,但这是可行的-并且在使用ToBase64TransformFromBase64Transform类的框架中支持它,您可以使用CryptoStream将流链接起来。结果将是一个ascii编码的base64流。

您可以使用base64编码来获得二进制数据的合理紧凑的ASCII表示:

string data = Convert.ToBase64String(theMemoryStream.ToArray());

使用Convert.FromBase64String方法解码字符串

检查我对我的密码做了什么,使用转换。FromBase64String和Convert。ToBase64String Methods

查看文档示例,可以更清楚地了解情况你. .你可以传递你的字节数组作为参数,然后检查什么你会…ASCII armor上指定的链接列出了最常用的二进制到文本编码形式,其中base64可用。你可以使用。net库来完成。

//

public static string EncodeString(string s)
        {
            byte[] b = System.Text.Encoding.Default.GetBytes(s);
            return Convert.ToBase64String(b, 0, b.Length);
        }

//解码

public static string DecodeString(string s)
{
    byte[] b = Convert.FromBase64String(s);
    return System.Text.Encoding.Default.GetString(b);
}