mem_get

mem_get ließt Bytes aus einem String und führt eine Datentyp-Konvertierung durch.

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)

Returnwert

rvValues ist ein Vektor von count Zahlenwerten oder ein String, wenn die Funktion in der Form ssSubString = mem_get(ssString, pos, count) aufgerufen wurde.

Parameter

ssString

ssString ist ein skalarer String.

pos

pos ist eine Zahl zwischen 1 und mem_len(ssString). Sie gibt den Offset im String an, ab dem gelesen werden soll.

ssType

Der Datentyp der gelesen werden soll:

Typ Beschreibung
„int8“ oder „char“ Ein Byte mit Vorzeichen (-127 bis 127).
„uint8“ oder „uchar“ Ein Byte ohne Vorzeichen (0 bis 255).
„wchar_t“ Ein UTF-16 Unicode-Zeichen (2 Bytes).
„int16“ 16-bit Integer (2 Bytes).
„uint16“ 16-bit vorzeichenloser (unsigned) Integer (2 Bytes).
„int32“ 32-bit Integer (4 Bytes).
„uint32“ 32-bit unsigned Integer (4 Bytes).
„int64“ 64-bit Integer (8 Bytes). Da UniScript diesen Wert in einer double-Zahl speichert, sind im Ergebnis nur ca. 52 Bits gültig.
„uint64“ 64-bit unsigned Integer (8 Bytes). Da UniScript diesen Wert in einer double-Zahl speichert, sind im Ergebnis nur ca. 52 Bits gültig.
„float“ 32-bit Real-Zahl (4 Bytes).
„double“ 64-bit Real-Zahl (8 Bytes).
count

count ist die Anzahl an Werten die gelesen werden sollen.

nRecLen

nRecLen ist die Anzahl der Bytes, die übersprungen werden sollen, um den nächsten Wert zu lesen (Abstand zwischen zwei Werten).

rvOptions

rvOptions ist ein Vektor mit 4 Werten: [nRecLen, nBits, nBitOffset, bBigEndian].

nRecLen: Anzahl an Bytes, die übersprungen werden sollen, um den nächsten Wert zu lesen, falls count > 1. Default ist 0, wenn rvOptions nicht angegeben wird.

nBits: 0: Es wird die Größe des unter ssType angegebenen Datentyps verwendet, z. B. 32 für „int32“. 1 .. 64: Anzahl an Bits die gelesen werden sollen. Der Wert muß kleiner oder gleich der Größe von ssType sein, aber größer als der nächst kleinere Typ. Beispiel: Bei ssType gleich „int16“ kann nBits zwischen 9 und 16 liegen, bei ssType gleich „int32“ kann nBits zwischen 17 und 32 betragen.

nBitOffset: 0 .. 7. Default ist 0, wenn rvOptions nicht angegeben wird.

bBigEndian: 1: Es wird die Big Endian byte order (Motorola) verwendet, 0: Es wird die Little Endian byte order (Intel) verwendet. Default ist 0, wenn rvOptions nicht angegeben wird.

Beispiel

// 100 float-Werte aus Buffer lesen:
// Buffer aus Datei lesen, im Buffer an Position 20 Byte springen und ersten
// Wert lesen. Die Werte stehen im Abstand von 72 Bytes im Buffer.
// Lese 100 Werte.
data_buffer = fread(fp, "char8", lenbuffer);
rvY = mem_get(data_buffer, 20, "float", 100, 72);

Siehe auch mem_set.

History

Version Beschreibung
R2012.4 Neuer Parameter rvOptions und Aufruf mit 3 Parametern um einen Teilstring zu extrahieren. Neue Bezeichnungen in ssType („int8“ und „uint8“).
5.8.2 Zusätzlicher, optionaler Parameter nRecLen.
5.0.0 Neuer Typ „wchar_t“.
4.2.0 Neu.

id-1871369