正如我所知道的,1字节有256种可能的组合。如果我正确理解它,这应该意味着您可以从数字0-255中显示任何数字,而这个数字将只使用您计算机上存储的1字节。不过,从256个数字到65535个数字中显示一个数字将花费你两个字节的存储空间(如果我理解正确的话)。但是,在向文本文档中输入数字65535并查找其文件大小(关于文本文档的“信息”)之后,我必须看到该文档使用的存储空间实际上是"5字节“。有人知道这是什么原因吗?
发布于 2021-08-30 00:58:10
这里可能有几个变量,但65535是5个字符。每个字符1字节=5字节。文本编辑器没有一个数字和代码相同的概念,所以所有东西(在一个基本级别)都存储为一组字符/字符串。
例如,当您编写C#代码时,如下
int number = 65535;
您正在为该数字显式分配4个字节的内存--即使在本例中它只需要2个字节。同样的,你也可以写
ushort number = 65535;
然后只分配两个字节。
但如果你写
string number = "65535";
、string otherNumber = "65534";
或string anotherNumber = "95536";
都将是相同的大小,并且这个大小与实际的数字无关(除了少数例外)。
当您将东西写入磁盘时,这些东西都会从窗口中消失,因为有许多方法可以压缩/优化存储内容。
发布于 2021-08-30 09:04:52
文件包含5字节信息的原因是您输入的文本(字符串) '65535'
有五个字符长。
这些字符中的每一个都是非常常见的,一个数字,并且是名为ASCII的臭名昭著字符集的一部分。
ASCII中的每个字符都有1字节长。因此,'65535'
是5字节长。
现在,如果您想将整数65535
表示为内存中的一个数字,那么从技术上讲,您只需要2位字节,是的。许多编程语言都有特定的数据类型,通常称为UInt16
或UShort
。
简而言之,区别在于将数字存储为text (String) vs作为整数存储在内存中。
发布于 2021-08-30 12:00:49
数字是一个数学概念,它不是由字节构成的。只有当您要在计算机上表示(或编码)一个数字时,才会使用位或字节,所需的位/字节的数量取决于编码,而编码又取决于要表示的值的范围。
log₂(n)
位。例如,如果您只需要0和65535,则可以用一位对任一值进行编码。uint16_t
,它需要两个字节。如果还需要负值,则需要int32_t
,它需要4个字节。abc
),则必须使用字符串。可以表示数字的最简洁的标准编码是ASCII,它在技术上使用7位字符,但大多数计算机无论如何都会将这些字符存储在8位字节中,这会使您的字节数增加到5字节,另外,如果您想使用不同长度的字符串,则需要对字符串的长度进行编码。在某些格式中,字符串以零字节结束(总共6字节),而在另一些格式中,长度本身被编码为数字。https://softwareengineering.stackexchange.com/questions/431499
复制相似问题