binch.js)| Methoden | Beschreibung |
| Write() | Bitgruppe schreiben. Parameter:
|
| Read() | Bitgruppe Lesen. Parameter:
|
| Data() | Stream initialisieren bzw. auslesen. Parameter:
|
var binch = new Binch(); //---- Werte 10, 100 und 1000 schreiben binch.Write(4, 10); binch.Write(7, 100); binch.Write(12, 1000); //---- Erzeugten Stream holen var mystream = binch.Data();Der...//---- Stream wieder auslesen binch.Data(mystream); // Stream festlegen a = binch.Read(4); // Wert 10 lesen b = binch.Read(7); // Wert 100 lesen c = binch.Read(12); // Wert 1000 lesen...//---- Weiteren Stream erzeugen binch.Data(''); // Reset binch.Write(1, 0); // etc....
Modul-Code:Binch = function () {
var Seq='', SeqL=0, SeqP=0, Bits=0, Akku=0, cons=this.constructor;
function ntos(n) { n=n.toString(16); if (n.length==1) n='0'+n; return unescape('%'+n); }
this.Write = function(n,v) {
if (Bits) Akku|=(v<<Bits); else Akku=v; Bits+=n;
while (Bits>7) { Seq+=ntos(Akku&255); SeqL++; Akku>>=8; Bits-=8; }
}
this.Read = function(n) {
while (Bits<n) { if (SeqP<SeqL) Akku|=(Seq.charCodeAt(SeqP++)<<Bits); Bits+=8; }
var v=Akku&cons.BitsMsk[n]; Akku>>=n; Bits-=n; return v;
}
this.Data = function(s) {
if (s==undefined) { if (Bits) { Seq+=ntos(Akku); SeqL++; Bits=Akku=0; } return Seq; }
Seq=s; SeqL=s.length; SeqP=Bits=Akku=0;
}
}
Binch.BitsMsk=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,
262143,524287,1048575,2097151,4194303,8388607,16777215,33554431,67108863,134217727,268435455,
536870911,1073741823,2147483647,4294967295];
| template |