rc.lib
Objekt rc.lib beinhaltet Hilfsmethoden und Objekte rc.lib.io.
Uint8Array Konvertierungen
byteArrayToBase64(byteArray)
byteArray
– Uint8Array mit Bytes.
Rückgabewert – Base64 Form vom byteArray
Code
const source = [];
for (let i = 0; i < 256; i++) {
source.push(i);
}
const array = Uint8Array.from(source);
const base64 = rc.lib.byteArrayToBase64(array);
rc.console.log(base64);
base64ToByteArray(base64)
base64
– Base64-String (Formatierung ist optional).
Rückgabewert – Uint8Array mit dem Inhalt von in base64
kodierten Daten
Code
rc.console.log(rc.lib.base64ToByteArray(`AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4
OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq
q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj
5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==`));
byteArrayToString(byteArray, encoding)
byteArray
– Uint8Array mit String-Bytes.
encoding
– Name der Encoding. Mögliche Encodings (case insensitive): "bom"
, "acp"
, "utf8"
, "utf-8"
, "utf16"
, "utf-16"
. Bei "bom"
werden die ersten 3 bzw. 2 Bytes nach UTF-8 BOM bzw. UTF-16-LE BOM geprüft. Falls vorhanden, wird entsprechende Konvertierung gemacht. Falls nicht vorhanden, werden mit "acp"
konvertiert. Bei anderen Encodings (außer "bom"
) wird nach BOM nicht analysiert.
Rückgabewert – String
Code
const inputArray = {
acp: [ 0x61,0x62,0x63,0x5F,0xE4,0xFC,0xF6], // abc_äüö
utf8: [ 0x61,0x62,0x63,0x5F,0xC3,0xA4,0xC3,0xBC,0xC3,0xB6,0x5F,0xD1,0x8D,0xD1,0x85,0xD0,0xB6], // abc_äüö_эхж
utf8_bom: [0xEF,0xBB,0xBF,0x61,0x62,0x63,0x5F,0xC3,0xA4,0xC3,0xBC,0xC3,0xB6,0x5F,0xD1,0x8D,0xD1,0x85,0xD0,0xB6], // abc_äüö_эхж
utf16_le: [ 0x61,0x00,0x62,0x00,0x63,0x00,0x5F,0x00,0xE4,0x00,0xFC,0x00,0xF6,0x00,0x5F,0x00,0x4D,0x04,0x45,0x04,0x36,0x04], // abc_äüö_эхж
utf16_le_bom: [0xFF,0xFE,0x61,0x00,0x62,0x00,0x63,0x00,0x5F,0x00,0xE4,0x00,0xFC,0x00,0xF6,0x00,0x5F,0x00,0x4D,0x04,0x45,0x04,0x36,0x04], // abc_äüö_эхж
utf16_be: [ 0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x5F,0x00,0xE4,0x00,0xFC,0x00,0xF6,0x00,0x5F,0x04,0x4D,0x04,0x45,0x04,0x36], // abc_äüö_эхж
utf16_be_bom: [0xFE,0xFF,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x5F,0x00,0xE4,0x00,0xFC,0x00,0xF6,0x00,0x5F,0x04,0x4D,0x04,0x45,0x04,0x36], // abc_äüö_эхж
}
for (const name of ["acp","utf8","utf8_bom","utf16_le","utf16_le_bom","utf16_be","utf16_be_bom"]) {
for (const conversion of ["ACP","BOM","UTF8","UTF16"]) {
const array = Uint8Array.from(inputArray[name]);
const string = rc.lib.byteArrayToString(array,conversion);
rc.console.log(name + " / " + conversion + " -->" + string + "<--");
}
}
stringToByteArray(string, encoding)
string
– zu konvertierender String
encoding
– name der Encoding. Mögliche Encodings (case insensitive): "acp"
, "utf8"
, "utf-8"
, "utf16"
, "utf-16"
.
Rückgabewert – Uint8Array mit konvertierten Bytes
Code
const string = "abc_äüö_эхж";
rc.console.log("ACP : " + rc.lib.stringToByteArray(string,"acp"));
rc.console.log("UTF8 : " + rc.lib.stringToByteArray(string,"utf-8"));
rc.console.log("UTF16: " + rc.lib.stringToByteArray(string,"utf-16"));
byteArrayToStream(byteArray)
byteArray
– Uint8Array mit Bytes. Rückgabewert – Base64 Form vom byteArray
Rückgabewert – COM-Objekt mit IStream drin.
Code
const stream = rc.lib.byteArrayToStream(Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]));
rc.console.log("Is stream: " + rc.lib.isStream(stream));
rc.console.log("Stream size: " + rc.lib.streamGetSize(stream));
rc.console.log("Stream position: " + rc.lib.streamSeek(stream,0,rc.lib.STREAM_SEEK_CURRENT));
rc.console.log("Restored array: " + rc.lib.streamToByteArray(stream));
streamToByteArray(stream [,count])
stream
– IStream mit Bytes
count
– optional; Anzahl von zu kopierenden Bytes. Falls nicht vorhanden, werden die Bytes bis zu Ende des Streams gelesen. Rückgabe-Array wird Größe count
haben. Falls count
plus aktuelle Position größer als Stream-Size ist, werden 0-Bytes hinten hinzugefügt.
Rückgabewert – Uint8Array mit count
Bytes
Code
const stream = rc.lib.byteArrayToStream(Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]));
rc.console.log("Size: " + rc.lib.streamGetSize(stream));
rc.console.log("Position: " + rc.lib.streamSeek(stream,0,rc.lib.STREAM_SEEK_CURRENT));
rc.console.log("Array: " + rc.lib.streamToByteArray(stream,3));
rc.console.log("Position: " + rc.lib.streamSeek(stream,0,rc.lib.STREAM_SEEK_CURRENT));
rc.console.log("Array: " + rc.lib.streamToByteArray(stream,0));
rc.console.log("Position: " + rc.lib.streamSeek(stream,0,rc.lib.STREAM_SEEK_CURRENT));
rc.console.log("Array: " + rc.lib.streamToByteArray(stream));
rc.console.log("Position: " + rc.lib.streamSeek(stream,0,rc.lib.STREAM_SEEK_CURRENT));
rc.console.log("Size: " + rc.lib.streamGetSize(stream));
rc.console.log("Position: " + rc.lib.streamSeek(stream,-3,rc.lib.STREAM_SEEK_END));
rc.console.log("Array: " + rc.lib.streamToByteArray(stream,6));
Stream Navigation
streamGetSize(stream)
stream
– IStream
Rückgabewert – gesamte Anzahl von Bytes im Stream
streamSetSize(stream, count)
stream
– IStream
count
– neue Streamgröße. Falls count
kleiner ist als die bisherige Größe des Streams, werden die Daten hinten abgeschnitten. Falls count
größer ist als die bisherige Größe des Streams, werden 0-Bytes hinten hinzugefügt.
Rückgabewert – keiner
streamSeek(stream, origin, position)
stream
– IStream
origin
– relativ zu welcher Stelle im Stream gilt position
. Mögliche Werte: 0 / 1 / 2, s. Konstanten STREAM_SEEK_xyz
position
– um wie viele Bytes soll die aktuelle Position geändert werden; kann positiv, negativ oder 0 sein.
Rückgabewert – neue aktuelle Position im Stream
rc.lib
hat auch diese Konstanen:
STREAM_SEEK_SET
- 0 : position
gilt relativ zum Anfang des Streams
STREAM_SEEK_CURRENT
- 1 : position
gilt relativ zu der aktuellen Position im Stream
STREAM_SEEK_END
- 2 : position
gilt relativ zum Ende des Streams
Bei jedem Lesen (per streamToByteArray
) verschiebt sich die aktuelle Position im Stream. Sie kann jederzeit mit streamSeek
geändert werden. Die aktuelle Position kann mit streamSeek(stream,STREAM_SEEK_CURRENT,0)
ermittelt werden.
Weitere Methoden
isStream(value)
– ermittelt, ob value
ein IStream ist
isActiveXObject(value) –
ermittelt, ob value
ein COM-Objekt ist
isUnknown(value)
– ermittelt, ob value
ein IUnknown ist
isEnumVARIANT(value)
– ermittelt, ob value
ein IEnumVARIANT ist
isVariant(value)
– ermittelt, ob value
ein Variant ist
isSafeArray(value)
– ermittelt, ob value
ein SafeArray ist
isSafeInteger(value)
– ermittelt, ob value
ein Integer im Bereich -9007199254740991..9007199254740991
ist
createGuid()
– erstellt eine Guid in String Form, ohne Formatierung.