Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 写入BinaryWriter时类型的大小_C#_.net_Size_Binarywriter - Fatal编程技术网

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
)a
char
在C中是UTF-16,这意味着每个字符需要2个字节。整数类型取决于它的大小,这意味着它可以是一个单字节(
byte
),一个
Short
(16位),
int
(32位),
long
(64位)。几乎(但不完全)每次我看到有人使用
BinaryWriter
,他们都是出于考虑不周的原因而使用它的。你在这里需要做什么?二进制序列化程序是更好的选择吗?(有几个可供选择)在
Write
方法的每个重写中明确指定的字节大小-不确定您还需要什么其他信息-例如-“将一个四字节有符号整数写入当前流,并将流位置提前四个字节。”…@Marc Gravell,每个人在处理项目时都有自己的选择。仍然有人说我们使用方法而不是属性,很少有人说使用属性而不是方法,但毕竟这取决于环境。我使用BinaryWriter是因为它的大小