7

我对较低级别的事情不是很有经验,例如一个字符有多少字节。我试图找出一个字符是否等于一个字节,但没有成功。

我需要设置一个分隔符,用于服务器和客户端之间的套接字连接。此分隔符必须尽可能小(以字节为单位),以最小化带宽。

当前分隔符是“#”。获得其他分隔符会减少我的带宽吗?

4

4 回答 4

20

这取决于您用来在字符和字节之间转换的字符编码(这根本不是一回事):

  • 在 ASCII 或 ISO 8859 中,每个字符由一个字节表示
  • 在 UTF-32 中,每个字符由 4 个字节表示
  • 在 UTF-8 中,每个字符使用 1 到 4 个字节
  • 在 ISO 2022 中,它要复杂得多

US-ASCII 字符(其中 # 为 1)在 UTF-8 中仅占用 1 个字节,这是允许多字节字符的最流行的编码。

于 2009-06-26T13:43:19.783 回答
5

这取决于编码。在 ANSI 等单字节字符集和各种 ISO8859 字符集中,每个字符一个字节。某些编码(例如 UTF8)是可变宽度的,其中对字符进行编码的字节数取决于被编码的字形。

于 2009-06-26T13:35:21.157 回答
5

答案当然是视情况而定。如果您在纯 ASCII 环境中,那么是的,每个字符占用 1 个字节,但如果您在 Unicode 环境(例如所有 Windows)中,则字符的大小范围为 1 到 4 个字节。

如果您从 ASCII 集中选择一个字符,那么是的,您的定界符尽可能小。

于 2009-06-26T13:38:41.447 回答
-6

不,所有字符都是 1 个字节,除非您使用 Unicode 或宽字符(例如重音符号和其他符号)。

一个字符是 1 个字节或 8 位长,它提供了 256 种可能的组合来形成字符。1 个字节的字符称为 ASCII 字符。它们只使用 7 位(即使 8 位可用,但您不能使用这第 8 位)来形成标准字母表和电传打字机和打字机仍然普遍使用时使用的各种符号。

您可以在此处找到 ASCII 图表以及哪些数字对应于哪些字符

于 2009-06-26T13:32:16.157 回答