2个字节可以容纳多少个字符?

时间:2014-11-05 08:57:19

标签: javascript c++ vb.net

如果我说2个字节可以容纳510个字符的数据,那我会错吗?基于1个字节可以容纳0-255个最大字符的事实

4 个答案:

答案 0 :(得分:4)

一个字节是

  • 8位,每一位可以是0或1
  • 可以代表256个不同值的东西

两个字节是......两个字节

  • 16位
  • 可以代表65536个不同值的东西

如果您不知道所使用的encoding,那么每个字节(或两个字节) 没有任何意义256个(或65536)值中的单个值应该是/ mean。

如果你正在谈论Char,你就不能说它是一个或两个或五十个字符......

ASCII encoding包含128个不同的字符(可显示95个字符,其余为控制字符),范围从代码0到127(以十进制字面表示的字节值)

Unicode encoding(v7)是一种通用编码。你有UTF-8,UTF-16 Little Endian或Big Endian,以及UTF-32 Little Endian或Big Endian。

  • UTF-8需要1,2,3或4个字节来表示一个字符。
  • UTF-16是固定大小的字符编码:每个字符需要2个字节。
  • UTF-32也是一个固定大小的字符编码,每个字符需要4个字节。

有数百种不同的编码可以代表单个字节可以表示的256个唯一值中的每一个的一个字符。与ANSI一样。


所以我倾向于说,是的,你错了认为两个字节可以容纳510个字符的数据,假设你正在使用上述编码之一或类似的。< / p>

但同样,Byte是Byte,而不是Char!

让我们设想一个具有特定解析器和格式化程序的(新)自定义编码,其中每个位[0 or 1]定义存储在字典中的一个单词/文本/字符串的选择,并跟随单词/ text / string选择取决于先前选择的单词(前一位值)

这种编码的目的有点无用,但是嘿!因为您使用了字典,所以可以确认一个字节 可以 正好代表510个字符的数据(甚至更多),因为使用了这种特定的编码/解码。 !

同样,一个字节是一个字节,说它包含一个,两个,零个或510个字符并不意味着任何如果你不首先定义使用的编码是什么< /强>


编辑!

虽然它超出了问题的范围,compression更加邪恶(并且通常使用词典;)但是压缩只能从某些中生效字节数....

答案 1 :(得分:1)

字符是概念的图形表示,可以占用任意数量的字节。例如,字符“S”(大写字母“S”)占用1个字节,而字符(接吻嘴唇)占用3个字节。

答案 2 :(得分:0)

我认为你的答案是对的。 byte是1个字符。二进制中的字符是一系列8个开或关或0或1。其中一个是一位,8位是一个字节所以1个字节是一个字符。所以2个字节包含两个字符。

答案 3 :(得分:0)

这取决于字符串的格式。 ASCII中每个字符1个字节,Unicode中每个字符2个字节。所以2个字节只能包含单个Unicode字符或2个ASCII字符。

以下代码将解释我的回答

MsgBox(System.Text.ASCIIEncoding.Unicode.GetByteCount("h")) '<--- displays 2
MsgBox(System.Text.ASCIIEncoding.ASCII.GetByteCount("h")) '<--- displays 1