Интересна тема. Я за создание такого сборника, если его нет конечно уже в составе какого нибудь пакета. Мне понадобилось туда сюда конвертировать REAL в буфер и из буфера и получилось что то вроде кода ниже (для паковки объектов в поток TCP использую WriteReal и ReadReal). Напоминает Stores. Может изобрел велосипед и в BB есть стандартные функции для таких задач?

## Код:
```
MODULE TcpBytes;

    IMPORT
        SYSTEM, Kernel;

    TYPE
        B8 = ARRAY 8 OF BYTE;

    PROCEDURE WriteReal* (r: REAL; VAR b: ARRAY OF BYTE; VAR pos: INTEGER);
        VAR i: INTEGER; le: B8;
    BEGIN
        IF Kernel.littleEndian THEN
            le := SYSTEM.VAL(B8, r);
            FOR i := 0 TO 7 DO b[pos + i] := le[i] END
        ELSE
            le := SYSTEM.VAL(B8, r);
            FOR i := 0 TO 7 DO b[pos + i] := le[7 - i] END
        END; INC(pos, 8)
    END WriteReal;

    PROCEDURE WriteRealS* (r: REAL; VAR b: ARRAY OF BYTE; pos: INTEGER);
        VAR s: INTEGER;
    BEGIN
        s := pos; WriteReal(r, b, s)
    END WriteRealS;

    PROCEDURE RealToBytes* (r: REAL): POINTER TO ARRAY OF BYTE;
        VAR res: POINTER TO ARRAY OF BYTE; s: INTEGER;
    BEGIN
        NEW(res, 8); s := 0;
        WriteReal(r, res, s);
        RETURN res
    END RealToBytes;

    PROCEDURE ReadReal* (IN b: ARRAY OF BYTE; VAR pos: INTEGER): REAL;
        VAR i: INTEGER; le: B8;
    BEGIN
        IF Kernel.littleEndian THEN
            FOR i := 0 TO 7 DO le[i] := b[pos + i] END
        ELSE
            FOR i := 0 TO 7 DO le[7 - i] := b[pos + i] END
        END; INC(pos, 8);
        RETURN SYSTEM.VAL(REAL, le)
    END ReadReal;

    PROCEDURE ReadRealS* (IN b: ARRAY OF BYTE; pos: INTEGER): REAL;
        VAR s: INTEGER;
    BEGIN
        s := pos;
        RETURN ReadReal(b, s)
    END ReadRealS;
    
    PROCEDURE BytesToReal* (b: ARRAY 8 OF BYTE): REAL;
        VAR s: INTEGER;
    BEGIN
        s := 0;
        RETURN ReadReal(b, s);
    END BytesToReal;

END TcpBytes.
```
