gpt4 book ai didi

c# - 如何在C#(3.5框架)中编码和解码Base128字符串

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:41 24 4
gpt4 key购买 nike

我正在从事与安全相关的项目,目前我在该项目中将数据转换为 base64 格式。但是转换后的 base64 数据的大小更大,为此我想将数据转换为 base128 格式。如何编码和解码数据在 c# 中使用 base128 字符串格式?

最佳答案

如果可以避免,我强烈建议不要使用 Base128 编码。 7 位字母表必须包含不可打印的 ASCII 控制字符(代码点 0x20 以下只有 94 个可打印字符)。如果您尝试向它们提供此类数据,许多系统将会崩溃。为额外的位而节省的少量空间似乎真的不值得。 ASCII85Base91 之类的东西可以满足您的需求而不会让人头疼。请参阅关于类似问题的这篇 SO 帖子。

但是,如果您坚持不懈,那么您应该能够修改以下映射字符串以获得您需要的内容。(注意:对于要添加到映射中的字符,您必须使用正确的不可打印代码,例如“\x09”):

public static string GetStringFromByteArray(byte[] data)
{
string mapping = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvqwxyz!#$%&()*+-;<=>?@^_`{|}~',./:[]\\\"";

BigInteger base10 = new BigInteger(data);
string baseX;
int base=mapping.Length;
var result = new Stack<char>();

do
{
result.Push(mapping[(int)(base10 % base)]);
base10 /= base;

} while (base10 != 0);

baseX = new string(result.ToArray());

return baseX;
}

关于c# - 如何在C#(3.5框架)中编码和解码Base128字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16931648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com