C# 写入BinaryWriter时类型的大小
C# 写入BinaryWriter时类型的大小,c#,.net,size,binarywriter,C#,.net,Size,Binarywriter,ASCII(StreamWriter)中每个字符的大小采用1字节,无论是数字还是字符 同样,每个字符的大小是多少,二进制的整数?(BinaryWriter)。有人能简单地解释一下吗 让我们从StreamWriter和BinaryWriter之间的区别开始StreamWriter用于将文本表示写入流StreamWriter将写入的任何内容(通过Write*方法)转换为字符串,然后通过编码转换为字节,并将字节写入底层流 BinaryWriter用于将原始“基本”数据类型写入流。对于数字类型,它采用内
ASCII
(StreamWriter
)中每个字符的大小采用1
字节,无论是数字还是字符
同样,每个字符的大小是多少,二进制的整数?(
BinaryWriter
)。有人能简单地解释一下吗 让我们从StreamWriter
和BinaryWriter
之间的区别开始StreamWriter
用于将文本表示写入流StreamWriter
将写入的任何内容(通过Write*方法)转换为字符串,然后通过编码转换为字节,并将字节写入底层流
BinaryWriter
用于将原始“基本”数据类型写入流。对于数字类型,它采用内存中的表示形式,对表示形式进行规范化处理(例如,处理endianess中的差异),然后将字节写入底层流。请注意,构造函数中还提供了一个编码。这仅用于将char
和string
转换为字节。默认编码是UTF8
ASCII(StreamWriter)中每个字符的大小均为1字节,无论是数字还是字符
这句话让我有些困惑。让我澄清一下。int
1将被转换为字符串“1”,该字符串以ASCII编码为49,实际上是一个字节,但100将被转换为字符串“10000”,该字符串以ASCII编码为49,即5个字节。如果使用BinaryWriter
,两者都将占用4个字节(一个int
的大小)
同样,每个字符的大小是多少,二进制的整数?(二进制编写器)。有人能简单地解释一下吗
char
的大小取决于BinaryWriter
和StreamWriter
使用的编码。诸如int
、long
、double
等数字类型的大小分别是基础类型的大小,即4、8和8字节。写入的数据量记录在每个BinaryWriter中。字符串与BinaryWriter中的char[]
区别对待,并且在写入编码字节之前,字符串的长度将作为前缀。sizeof(char)==2
,因此单个字符的长度为2字节;然而,流的大小取决于编码(Ascii、UTF-8等)和字符本身:aaa
(3个英文字母a
)可以短于a
(3个俄文字母a
)achar
在C中是UTF-16,这意味着每个字符需要2个字节。整数类型取决于它的大小,这意味着它可以是一个单字节(byte
),一个Short
(16位),int
(32位),long
(64位)。几乎(但不完全)每次我看到有人使用BinaryWriter
,他们都是出于考虑不周的原因而使用它的。你在这里需要做什么?二进制序列化程序是更好的选择吗?(有几个可供选择)在Write
方法的每个重写中明确指定的字节大小-不确定您还需要什么其他信息-例如-“将一个四字节有符号整数写入当前流,并将流位置提前四个字节。”…@Marc Gravell,每个人在处理项目时都有自己的选择。仍然有人说我们使用方法而不是属性,很少有人说使用属性而不是方法,但毕竟这取决于环境。我使用BinaryWriter是因为它的大小