跳至内容

位和字节长度计算器 - 免费数据大小工具

位和字节长度计算器可以计算一个整数、十六进制字符串或普通文本字符串所占用的位数和字节数。工具支持按照UTF-8、UTF-16、UTF-32、ASCII和Latin-1等不同字符编码方式分别计算长度,因为同一段文本在不同编码下占用的字节数并不相同,适合开发者估算数据存储空间、网络传输带宽以及数据库字段长度限制。

位和字节长度计算器

输入类型
位
8
字节
1

8 位 = 1 字节

可视化

字节 1
11111111
0xFF
加载计算器...
📚

文档

什么是比特和字节长度计算器?

比特和字节长度计算器用于计算一段数据需要多少比特和字节。比特是一个二进制数字,即0或1。字节由8个比特组成。计算器接受整数、十六进制字符串或文本字符串,并以这两种单位报告精确大小。

这对编程、网络通信和数据存储都很重要。数据库列、网络数据包和磁盘上的文件,其大小都以字节计量,而大小取决于数据的写入方式。

如何计算整数的比特长度

正整数的比特长度是其二进制形式中的数字个数。例如,255的二进制形式是11111111,包含8位数字,因此其比特长度为8。

**公式:**对于正整数n,比特长度是n的底2表示形式中的数字个数。特殊情况是n = 0,其比特长度为1。

负整数使用二进制补码,这是计算机存储有符号数的标准方式。负整数的比特长度,是能够以二进制补码形式容纳它的最小比特数。例如,−128可用8个比特表示(即10000000),但−129需要9个比特,因为8个比特只能表示到−128。

确定比特长度后,将其向上取整到最接近的完整字节,即可得到字节长度:

字节长度 = ⌈比特长度 ÷ 8⌉

符号⌈ ⌉表示“向上取整”。9比特的值仍需要完整的2个字节,因为字节不能拆分。

计算示例

整数比特长度字节长度
011
25581
25692
−12881
−12992
18,446,744,073,709,551,615 (2⁶⁴ − 1)648

如何计算十六进制字符串的比特长度

每个十六进制数字(0–9、A–F)恰好表示4个比特,因为4个比特可以容纳16种可能的值。

**公式:**比特长度 = 十六进制数字个数 × 4。字节长度同样是将比特长度除以8后向上取整。

例如,十六进制字符串“FF”有2个数字,因此其比特长度为2 × 4 = 8比特,即1个字节。十六进制字符串“ABCD”有4个数字,对应16比特,即2个字节。计数前会移除空格和其他空白字符。即使数字个数为奇数,也会向上取整到完整字节:“F”是4比特,计算器将其报告为1个字节。

如何计算文本字符串的字节长度

对于文本,大小取决于字符编码,即将字符转换为字节所使用的规则。计算器支持五种编码:

  • UTF-8:一种在整个网络中使用的可变长度编码。每个字符占用1至4个字节。普通英语字母、数字和标点符号各占1个字节。
  • UTF-16:JavaScript 和 Windows 内部使用的编码。大多数字符占2个字节;基本多文种平面之外的字符(例如许多表情符号)占4个字节。
  • UTF-32:一种固定长度编码。每个字符恰好占4个字节,与字符类型无关。
  • ASCII:一种7比特编码,可表示128个字符,主要包括英语字母、数字和基本标点符号。每个字符占1个字节。字符集之外的任何字符都会被拒绝。
  • Latin-1(ISO-8859-1):一种8比特编码,可表示256个字符,并加入西欧语言中使用的带重音字母。每个字符占1个字节。字符集之外的字符都会被拒绝。

**公式:**字节长度 = 编码为字符串生成的字节数。比特长度 = 字节长度 × 8。

这些计数仅涵盖文本本身。不会添加字节顺序标记,因此这里的 UTF-16或 UTF-32计数,比在开头写入标记的工具所得结果少2或4个字节。

计算示例

文本“Hello, world!”包含13个字符,全部是普通 ASCII 字母和标点符号。

  • UTF-8:13个字节(104比特),因为每个字符都能用1个字节表示。
  • UTF-16:26个字节(208比特),因为每个字符占2个字节。

文本“こんにちは世界”(七个日文字符)在 UTF-8中每个字符占3个字节,因此共占21个字节(168比特)。

😀 这样的表情符号位于基本多文种平面之外。在 UTF-8中占4个字节,在 UTF-16中占4个字节(以代理对形式表示),在 UTF-32中占4个字节。

为什么有符号整数会改变结果

计算机使用二进制补码而不是普通的减号来存储负数。这意味着负整数的比特长度并不简单等于其绝对值的比特长度加一。规则是:比特长度是满足该值至少为−2^(k−1)的最小比特数k。因此,−128(等于−2⁷)可用8个比特表示,而−129需要9个比特。

常见问题

如何将字节转换为比特? 乘以8。十个字节等于80个比特,因为按照定义,每个字节包含8个比特。

比特长度和字节长度有什么区别? 比特长度计算单个二进制数字。字节长度计算由8个比特组成的组;当比特长度不是8的倍数时,会向上取整到下一个完整字节。

UTF-8字符占用多少字节? 占用1至4个字节。与 ASCII 共有的字符占1个字节。许多带重音的拉丁字母、希腊字母和西里尔字母占2个字节。大多数中文、日文和韩文字符占3个字节。表情符号和其他罕见符号占4个字节。

十六进制字符串的字节长度如何计算? 移除空白字符后,计算十六进制数字的个数,乘以4得到比特数,然后向上取整到完整字节。每个字节对应2个十六进制数字,因此“FF”是1个字节,“ABCD”是2个字节。单个数字(如“F”)是4个比特,但仍占用1个字节。

为什么负整数有时比对应的正整数需要更多比特? 二进制补码使用一个比特标记符号,但该比特与数值范围共享,而不是在每种情况下都额外添加。−128与最大为127的正数一样,都能用8个比特表示;但−129无法再用8个比特表示,需要9个比特。

此计算器接受多大的输入? 整数、十六进制字符串和文本字符串,长度最多为1,000,000个字符。

参考文献

  1. "Character encoding." Wikipedia,维基媒体基金会。https://en.wikipedia.org/wiki/Character_encoding
  2. "UTF-8, UTF-16, UTF-32 & BOM." Unicode 公司。https://www.unicode.org/faq/utf_bom.html
  3. "Two's complement." Wikipedia,维基媒体基金会。https://en.wikipedia.org/wiki/Two%27s_complement