.. highlightlang:: us .. index:: mem_get .. _mem_get: mem_get ======= .. us.tag mem_get ENGLISH mem New420 Changed500 Changed582 Changed5404 :ref:`mem_get` reads bytes from a string and converts the data. .. function:: rvValues = mem_get(ssString, pos, ssType, count) rvValues = mem_get(ssString, pos, ssType, count, nRecLen) rvValues = mem_get(ssString, pos, ssType, count, rvOptions) ssSubString = mem_get(ssString, pos, count) .. us.return **Return Value** *rvValues* is a vector of length *count*. .. us.params **Parameters** .. uparam:: ssString *ssString* is a scalar string. .. uparam:: pos *pos* is a number between 1 and ``mem_len(ssString)``. The number sets the first character to start reading. .. uparam:: ssType Is the data type of the data: .. list-table:: :header-rows: 1 * - Type - Description * - "int8" or "char" - One signed byte (-127 bis 127). * - "uint8" or "uchar" - One unsigned byte (0 bis 255). * - "wchar_t" - UTF-16 Unicode character (2 bytes). * - "int16" - 16-bit integer (2 bytes). * - "uint16" - 16-bit unsigned integer (2 bytes). * - "int32" - 32-bit integer (4 bytes). * - "uint32" - 32-bit unsigned integer (4 bytes). * - "int64" - 64-bit integer (8 bytes). Because UniScript stores 64-bit integers in double format, only (approx.) 52 bits are valid. * - "uint64" - 64-bit unsigned integer (8 bytes). Because UniScript stores 64-bit integers in double format, only (approx.) 52 bits are valid. * - "float" - 32-bit real values (4 bytes). * - "double" - 64-bit real values (8 bytes). .. uparam:: count *count* is the number of values to read. .. uparam:: nRecLen *nRecLen* is the number of bytes to skip before reading the next value (distance between two values). .. uparam:: rvOptions *rvOptions* is a vector [*nRecLen*, *nBits*, *nBitOffset*, *bBigEndian*]. *nRecLen* is the number of bytes to skip before reading the next value (distance between two values). Default is 0, if *rvOptions* is not specified. *nBits*: 0: The data type specified in *ssType* is used. For example 32 bits for "int32". 1 .. 64: Number of bits to read. The value must be smaller or equal to the size of the data type specified in *ssType*. Example: * For *ssType* = "int16" *nBits* can be a number between 9 and 16 * For *ssType* = "int32" *nBits* can be a number between 17 and 32. *nBitOffset*: 0 .. 7. Default is 0, if *rvOptions* is not specified. *bBigEndian*: 1: Big Endian byte order (Motorola), 0: Little Endian byte order (Intel). Default is 0, if *rvOptions* is not specified. .. us.example **Example** :: // Read 100 floats from Buffer: // Read Buffer from file, read the first value starting at positon 20 byte. // The distance to the next value is 72 bytes. // Read all 100 values. data_buffer = fread(fp, "char8", lenbuffer); rvY = mem_get(data_buffer, 20, "float", 100, 72); See also :ref:`mem_set`. .. us.history **History** .. list-table:: :header-rows: 1 * - Version - Description * - R2012.4 - New parameter *rvOptions* an call with 3 parameters to extract a part of a substring. New types in *ssType* ("int8" and "uint8"). * - 5.8.2 - New parameter *nRecLen*. * - 5.0.0 - New type "wchar_t". * - 4.2.0 - New. .. seealso:: :ref:`overview-strings`, :ref:`mem_alloc`, :ref:`mem_set`, :ref:`mem_len`, :ref:`strchar`, :ref:`strextract` :sub:`id-1871369`