C# 在二进制表示中获取字符串、int等?
是否可以获取二进制格式的字符串、整数等?我的意思是假设我有字符串: “Hello”我想以二进制格式存储,所以假设“Hello”是 1111000011001111111100000000的二进制文件(我不知道,我只是快速输入了一些东西) 我可以不以字符串的形式存储上述二进制文件,而是以位的实际格式存储吗C# 在二进制表示中获取字符串、int等?,c#,algorithm,compression,C#,Algorithm,Compression,是否可以获取二进制格式的字符串、整数等?我的意思是假设我有字符串: “Hello”我想以二进制格式存储,所以假设“Hello”是 1111000011001111111100000000的二进制文件(我不知道,我只是快速输入了一些东西) 我可以不以字符串的形式存储上述二进制文件,而是以位的实际格式存储吗 除此之外,实际上是否可以存储少于8位的数据。我想说的是,如果字母A是文本中使用频率最高的字母,我可以使用1位来存储它,而不是构建二叉树。您会采用什么编码?您可以使用以下方法: Convert.T
除此之外,实际上是否可以存储少于8位的数据。我想说的是,如果字母A是文本中使用频率最高的字母,我可以使用1位来存储它,而不是构建二叉树。您会采用什么编码?您可以使用以下方法:
Convert.ToBytes(1);
ASCII.GetBytes("text");
Unicode.GetBytes("text");
一旦你有了字节,你就可以做所有你想做的事情了。在我们给你提供更多有用的信息之前,你需要某种算法
我的意思是如果这封信
A是英语中最常用的字母
文本,我可以使用1位来存储它吗
关于压缩而不是
构建二叉树
您描述的算法称为。与您的示例相关,如果“A”经常出现在数据中,那么算法将“A”表示为1。如果“B”也经常出现(但频率低于A),则算法通常将“B”表示为01。然后,剩下的字符将是00xxxxx。。。等等
本质上,该算法对数据进行统计分析,并生成一个能给您最大压缩的代码。字符串实际上是以二进制格式存储的,所有字符串也是如此 字符串和另一种数据类型的区别在于,当程序显示字符串时,它检索二进制并显示相应的(ASCII)字符 如果要以压缩格式存储数据,则需要为每个字符分配超过1位的数据。除此之外,您如何确定哪个角色最常见
如果1代表“A”,那么0是什么意思?所有其他字符?您要查找的是,它用于用较短的位模式表示更常见的值 存储位代码的方式仍然限于整个字节。没有使用少于一个字节的数据类型。存储可变宽度位值的方法是将它们端到端打包到字节数组中。这样您就有了一个位值流,但这也意味着您只能从头到尾读取该流,不会像对字节数组中的字节值那样随机访问这些值 是否可以获取字符串、整数、, 二进制格式的etc 对。这样做有几种不同的方法。一种常见的方法是用字节数组生成MemoryStream,然后在该内存流上生成BinaryWriter,然后向BinaryWriter写入int、bools、char、string等等。这将用表示您编写的数据的字节填充数组。还有其他方法可以做到这一点 我可以不以字符串的形式存储上述二进制文件,而是以位的实际格式存储吗 当然,您可以存储字节数组 实际上是否可以存储少于8位的数据
不是。C#中最小的存储单元是一个字节。但是,有些类允许您将字节数组视为位数组。您应该阅读有关BitArray类的内容。这应该是一篇评论(同意,但是没有代表)字符串只是一个字节流,末尾有一个空终止符。它已经是二进制格式。尝试查找zlib以进行压缩。为什么要进行向下投票?如果你不说出你不喜欢的是什么,那是毫无意义的……我们在大学里必须写“哈夫”和“吹气”,这会唤起记忆。因此,实际上不需要构建二叉树就可以存储此表示。存储表示不需要构建二叉树。但是,代码通常以二叉树的形式直观地表示,因为这样更容易阅读。谢谢,我将查看您的建议。