Encoding a real number.
The following limitations exist: (1) only a binary encoding format of base 2 is supported, (2) only exponent values that can be represented in at most 24 bits is supported, and (3) only a maximun of 64 bits can be used to encode a mantissa. Even with these limitations a large P6FLOAT value can be encoded.
If either P6ASN1REAL_MINUSINFINITY or P6ASN1REAL_PLUSINFINITY is set in the flags parameter, then the numValue parameter will be ignored. Infinity values are encoded as a special value.
- Parameters
-
pBuffer | [ in out ] array of bytes to build an ASN.1 encoded message |
bufSize | [ in ] size in octets (i.e., bytes) of pBuffer |
pIndex | [ in ] current offset into pBuffer, that is, the next free byte to write into [ out ] As the unsigned number is encoded in pBuffer this index value increases in value |
numValue | [ in ] a P6FLOAT value to encode |
flags | [ in ] indicate a special value or way of encoding the real number (e.g., minus infinity) |
overrideTag | [ in ] define an application tag to be used instead of the standard integer tag. If set to zero, then the universal tag of real is used. |
- Returns
Success | P6R::eOk | |
Failure | P6R::eNotInitialized | A successful call to initialize was not made before this call. |
P6R::eInvalidArg | One of the parameters is NULL. |
P6R::eTooBigThe remaining space in pBuffer is insufficient to encode the integer value. | |
P6R::eNotSupportedThe required encoding is not currently provided. | |