オクテット

バイト、オクテット

[7] バイト (byte) は、処理上1単位とされるビット列です。 現代では1バイトは、8ビットです。オクテット (octet) は、 8ビットビット列です。

[12] バイトは、通常、 0 以上 255 以下のいずれかの整数を表すものと解されます。

仕様書

意味

[15] バイト (byte) は、 8つのビットです >>14

呼称

[8] 本来バイトは8ビットとは限らないため、8ビットを意味する時オクテットと呼ぶのを好む人もいます。 8ビット以外のバイトは最早歴史的・理論上の存在に過ぎないため、 広く普及しているバイトが好ましいとする人もいます。

表記

[16] バイトは、2桁の16進数 (範囲 [ 0x00, 0xFF ]) で表現されます >>14

[30] 歴史的には十進数表記や八進数表記もよく用いられていましたが、 現在ではあまり用いられなくなっています。

[31] 文字列を構成するバイトの場合は、ビット組合せの表記を使うのが正式とされていました。

分類

[19]

関連

[20] バイトを、バイト列オクテット列といいます。

[21] バイトを表すことを意図した C データ型として char があります。

[22] アルバイトとは無関係です。

歴史

[1]

JIS X 0211‐1994 4.2.10 バイト (byte)
一つの単位として取り扱うビット列。

[5]

4.2 バイト (byte)
一つの単位として操作するビット列。 各ビットは、0又は1のをもつ。 JIS X 0202:1998 4.

[6]

オクテット (octet)
1単位として取り扱う8ビット長のビット順序列。 (JIS X 0221‐1:2001 4.27)

[4]

実行環境基本文字集合の任意の要素を保持するために十分な大きさを持つデータ記憶域単位オブジェクトの個々のバイトのアドレスを、 一意に表現できなければならない。 バイトは連続するビットの列からなる。 1バイト中のビット数は、処理系定義とする。 最も重みの小さいビットを下位ビット (low-order bit) と呼び、最も重みの大きいビットを上位ビット (high‐order bit) と呼ぶ。 (JISX3010-1993 3.4)

[18] MIME SniffingEncoding Standard の定義を参照しています。

メモ

[3] バイトと併用される倍数接頭辞には、幾つかの流儀があります。

一番よく使われているのは、 1 KB (キロ・バイト) = 1024 B = 210 B とする方法です。ビットの2進性を中心に考えると自然な方法です。

しかし、これは SI の流儀 (k (キロ) = 1000 = 103) とは一致しません。日常的 (10進的) 感覚からすると 1024 という数は中途半端な感じがしますし、計算も面倒です。 (例えば 100,000 バイトは 100 キロ・バイトではありません。) この方法はハード・ディスクの製品案内などでよく使われます。

この問題を解決するための幾つかの提案があります。 まず、 KB の K と kg の k (SI のキロ) を別のものとしてしまうというものです。 この流儀の人の中には、 KB を「ケー・バイト」, MB を「エム・バイト」のように読むべきだと言う人もいます。 (但しこの考え方は古めのもので、現在では廃れた感があります。)

しかしこの方法には致命的な欠点があります。 K と k は区別できても、それ以上の単位, M や G は区別できません。 SI が既に大文字ですし、 SI には m (ミリ) や g (グラム) が存在しますから、どうにもなりません。

他の回避法として、バイト系の接頭辞に i をつける方法と、 接頭辞を二重にする方法があります。前者では KiB, MiB, GiB (ギビ (gibi) ・バイト)、後者では KKB ( (large) キロ・ バイト), MMB, TTB のような単位になります。

しかし、これらの回避法はいずれも普及したものではありません。 普及する見通しも今のところありません。 今後も 103 系と 210 系の単位による混乱は続くでしょう。

[11] Large Disk HOWTO: 単位とサイズ <http://www.linux.or.jp/JF/JFdocs/Large-Disk-HOWTO-3.html>

[2] 8ビットに相当する単位としてはバイトが有名ですが、バイトの長さは環境に依存するもので、 1 byte := 8bits と定義されているわけではありません。8ビット単位でデータを扱うことは非常に多いことは、1バイト ≒ 8ビットと考えられていることからも皮肉にも明らかですから、不便極まりありません。そこできっちり必ず8ビットをあらわす単位としてオクテットが使い出されました。

[9] こんにちでは依然バイト優位とはいえ、オクテットの知名度も徐々に上がっていますから、どうしてもバイトである必然性の無い限りオクテットに置換えていってよいと思われます。

[13] RFC 1951 - DEFLATE Compressed Data Format Specification version 1.3 ( 版) <https://tools.ietf.org/html/rfc1951#section-1>

Byte: 8 bits stored or transmitted as a unit (same as an octet). For this specification, a byte is exactly 8 bits, even on machines which store a character on a number of bits different from eight.

[32] RFC 1950 - ZLIB Compressed Data Format Specification version 3.3 () <https://tools.ietf.org/html/rfc1950#page-3>

[33] RFC 1952 - GZIP file format specification version 4.3 () <https://tools.ietf.org/html/rfc1952#page-3>

[34] RFC 7692 - Compression Extensions for WebSocket () <https://tools.ietf.org/html/rfc7692#section-7>

[23] RFC 959 - File Transfer Protocol ( ()) <https://tools.ietf.org/html/rfc959#page-3>
byte size
There are two byte sizes of interest in FTP: the logical byte size of the file, and the transfer byte size used for the transmission of the data. The transfer byte size is always 8 bits. The transfer byte size is not necessarily the byte size in which data is to be stored in a system, nor the logical byte size for interpretation of the structure of the data.

[24] Editorial: start using the Infra Standard (annevk著, ) <https://github.com/whatwg/encoding/commit/a26f76889bf393999e9caad84a3647ab09c39e09>

[25] Editorial: start using the Infra Standard (annevk著, ) <https://github.com/whatwg/fetch/commit/9ba4e78e5cb5fc1132f89d7e344cd2c2e1950c67>

[26] Improve representation guidelines for bytes and code points (annevk著, ) <https://github.com/whatwg/infra/commit/543b2c48b6e1babb50d77e5a3ba5b86be8b56eb9>

[27] Editorial: format bytes and code points per Infra (annevk著, ) <https://github.com/whatwg/url/commit/91cb2aa532bc2b217e6237d23649aed0d2c566bb>

[28] Editorial: let code point and friends be defined by Infra (annevk著, ) <https://github.com/whatwg/html/commit/59595d9c2ccadb9332c15048be5d30174532ee70>

[29] Deal with the parentheses exception for code point/byte display (annevk著, ) <https://github.com/whatwg/infra/commit/a743dbd7f1c9d6200d8eaae127aeeb85a701fb02>