17 May 78
INTERNET Notebook
IEN: 39 J. Postel
Section: 2.5.3.4.2 ISI
17 May 1978
NSW Data Representation (NSWB8)
Data transmitted between NSW processes is encoded into a standard form.
This standard form, called NSWB8, is based on a few atomic data types
and a list data type.
Data Structure Types and Encoding
EMPTY
TYPE (1 byte) = 1
VALUE (none) empty
BOOLEAN
TYPE (1 byte) = 2
VALUE (1 byte) boolean
FALSE=0
TRUE=1
INDEX
TYPE (1 byte) = 3
VALUE (2 bytes) index
The value represents a positive integer in the range 0 through
2**16 - 1.
The most significant byte is first.
INTEGER
TYPE (1 byte) = 4
VALUE (4 bytes) two's complement integer
The most significant byte is first. [If we don't use (2**32-1)
it will be easier on one's complement machines.]
Postel [page 1]
17 May 78 INTERNET Notebook NSW Data Representation (NSWB8) BITSTR TYPE (1 byte) = 5 COUNT (2 bytes) VALUE (count bits) left adjusted in (count+7)/8 bytes CHARSTR TYPE (1 byte) = 6 COUNT (2 bytes) VALUE (count bytes) ASCII text LIST TYPE (1 byte) = 7 COUNT (2 bytes) Count Data Structures PAD TYPE (1 byte) = 9 VALUE (none) Any PAD elements should be completely ignored. They are not to be counted (for example as elements of a LIST). The concept of a PAD element has been useful in forming data structures, especially when the structure cannot be built sequentially. The first byte of a data structure is a type code. The following bytes depend on the type code. The type code zero is reserved. The type code 8 is reserved for possible use as REPEAT (data compression) element. Postel [page 2]
17 May 78 INTERNET Notebook NSW Data Representation (NSWB8) Data Structure Format element *-----* empty * 1 * *-----* 1 *-----*--------* boolean * 2 * 0 or 1 * 0 for FALSE or 1 for TRUE *-----*--------* 1 1 *-----*-------* index * 3 * index * small nonnegative integer *-----*-------* 1 2 *-----*--------* integer * 4 *integer * two's complement integer *-----*--------* 1 4 *-----*-------*------* bitstr * 5 * count * bits * *-----*-------*------* 1 2 count (count+7)/8 bytes) *-----*-------*------* charstr * 6 * count * text * Network ASCII *-----*-------*------* 1 2 count *-----*-------*------------------* list * 7 * count * count-structures * *-----*-------*------------------* 1 2 Postel [page 3]
17 May 78 INTERNET Notebook NSW Data Representation (NSWB8) Examples Empty *-----* * 1 * *-----* Boolean "TRUE" *-----*-----* * 2 * 1 * *-----*-----* Index "7" *-----*-----*-----* * 3 * 0 * 7 * *-----*-----*-----* Integer "-3" *-----*-----*-----*-----*-----* * 4 * 255 * 255 * 255 * 253 * *-----*-----*-----*-----*-----* Bit string "10001111101011" *-----*-----*-----*-----*-----* * 5 * 0 * 14 * 143 * 172 * *-----*-----*-----*-----*-----* Character string "ABCDE" *-----*-----*-----*-----*-----*-----*-----*-----* * 6 * 0 * 5 * A * B * C * D * E * *-----*-----*-----*-----*-----*-----*-----*-----* Postel [page 4]
17 May 78 INTERNET Notebook NSW Data Representation (NSWB8) List of a character string "ABC" and a boolean "FALSE". *-----*-----*-----*-----*-----*-----* * 7 * 0 * 2 * 6 * 0 * 3 * *-----*-----*-----*-----*-----*-----* *-----*-----*-----*-----*-----* * A * B * C * 2 * 0 * *-----*-----*-----*-----*-----* Postel [page 5]
mirror server hosted at Truenetwork, Russian Federation.