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]