rc.lib

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);
AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4 OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3Bx cnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmq q6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj 5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/w==

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==`));
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50, 51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100, 101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140, 141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180, 181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220, 221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255

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"));
ACP : 97,98,99,95,228,252,246,95,63,63,63 UTF8 : 97,98,99,95,195,164,195,188,195,182,95,209,141,209,133,208,182 UTF16: 97,0,98,0,99,0,95,0,228,0,252,0,246,0,95,0,77,4,69,4,54,4

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));
Is stream: true Stream size: 20 Stream position: 0 Restored array: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19

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));
Size: 20 Position: 0 Array: 0,1,2 Position: 3 Array: Position: 3 Array: 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 Position: 20 Size: 20 Position: 17 Array: 17,18,19,0,0,0

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.