|
You last visited: Today at 01:54
Advertisement
Kurze Erklärung bzgl. JavaScript
Discussion on Kurze Erklärung bzgl. JavaScript within the Web Development forum part of the Coders Den category.
02/04/2016, 12:18
|
#1
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
Kurze Erklärung bzgl. JavaScript
Moin,
kann mir jemand kurz sagen, was genau "& 255" und "<< 8" in dieser Zeile macht?
PHP Code:
(strVar.charCodeAt(intIndex) & 255) << 8
Muss es nämlich in .NET umprogrammieren.
|
|
|
02/04/2016, 13:31
|
#2
|
dotCom
elite*gold: 9842
Join Date: Mar 2009
Posts: 16,869
Received Thanks: 4,686
|
Hoffe das dir das hilft.
Code:
intIndex = 0; // Nimmt das 'd'evsome
strVar = "devsome";
var buffer = (strVar.charCodeAt(intIndex) & 255) << 8;
// 255 Verändert nichts
// 8 8ter Potenz
// Ergebnis ohne die 8 oder mit der 0 = 100
// Zahl | Ergebnis
// 1 | 200
// 2 | 400
// 3 | 800
// 4 | 1600
// 5 | 3200
// 6 | 6400
// 7 | 12800
// 8 | 25600
alert(buffer);
|
|
|
02/04/2016, 14:07
|
#3
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
Wenn ich mir die Ergebnisse so anschaue...
Mit << 8 komme ich auf 24832 -> 97 * 256 = 24832
Klappt mit allen CharCodes. Wenn ich jedoch eines benutze, welches größer als 255 ist, z.B. Ā (CharCode: 256), dann kommt bei alert(buffer); 0 raus.
Das heißt, ich könnte einfach eine If Abfrage machen, ob CharCode > 255 dann einfach 0 setzen, andernfalls einfach mit 256 multiplizieren. Oder irre ich mich da gerade?
|
|
|
02/04/2016, 14:13
|
#4
|
dotCom
elite*gold: 9842
Join Date: Mar 2009
Posts: 16,869
Received Thanks: 4,686
|
Quote:
Originally Posted by Kraizy
Wenn ich mir die Ergebnisse so anschaue...
Mit << 8 komme ich auf 24832 -> 97 * 256 = 24832
Klappt mit allen CharCodes. Wenn ich jedoch eines benutze, welches größer als 255 ist, z.B. Ā (CharCode: 256), dann kommt bei alert(buffer); 0 raus.
Das heißt, ich könnte einfach eine If Abfrage machen, ob CharCode > 255 dann einfach 0 setzen, andernfalls einfach mit 256 multiplizieren. Oder irre ich mich da gerade?
|
Also ist die 255 für den CharCode index, ist das nicht wonach du dann gesucht hast um es umzubauen :3 ?
|
|
|
02/04/2016, 14:33
|
#5
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
Naja die gesamte "Funktion" schaut so aus:
PHP Code:
for (var ap = 0; ap < an; ap++) {
ax[ap] = (av.charCodeAt(ap * 4) & 255) + ((av.charCodeAt(ap * 4 + 1) & 255) << 8) + ((av.charCodeAt(ap * 4 + 2) & 255) << 16) + ((av.charCodeAt(ap * 4 + 3) & 255) << 24);
}
Ich wusste halt nicht was die & 255 und << 8 bzw. 16 und 24 auf sich hatten. Und habe soeben erst rausgefunden, dass wenn ich einfach den jeweiligen charCode(index) mit 256 multipliziere, aufs selbe Ergebnisse komme.
PHP Code:
a= 97
97 << 8
//Ergebnis: 24.832
b = 98
98 << 8
//Ergebnis: 25.008
Die selben Ergebnisse bekomme ich wie gesagt auch, wenn ich einfach 97 * 256 bzw 98 * 256 rechne.
Bei << 16 wäre es dann:
PHP Code:
a = 97
97 << 16
//Ergebnis: 6.356.992
b = 98
98 << 16
//Ergebnis: 6.422.528
Hier bekomme ich auch wieder die selben Ergebnisse, wenn ich einfach 97 * 65.536 bzw 98 * 65.536 rechne. Die Logik dahinter verstehe ich zwar immer noch nicht, aber wenns so funktioniert, dann lasse ich das einfach so..
|
|
|
02/04/2016, 15:02
|
#6
|
dotCom
elite*gold: 9842
Join Date: Mar 2009
Posts: 16,869
Received Thanks: 4,686
|
d.h Problem gelöst ?
gibt 0 aus, da der Buchstabe über  liegt.
Man kann es wie du dann schon raus gefunden hast auf 2 Varianten machen.
Würde trotzdem die erste nehmen, somit prüft man ob der Char innerhalb des vorgegeben ISO liegt & berechnet das Ergebnis immer wieder *2 so oft wie die Zahl nach dem << (ich würde mal eine Art for-schleife sagen)
Code:
intIndex = 0; // Nimmt den ersten Buchstaben
strVar = "Āpfel";
var buffer = (strVar.charCodeAt(intIndex) & 255) << 2;
// 255 The ISO-Latin-1 codeset ranges from 0 to 255
// Zahl | Ergebnis
// 0 | 97
// 1 | 194
// 2 | 388
// 3 | 776
// 4 | 1552
// 5 | 3104
// 6 | 6208
// 7 | 12416
// 8 | 24832
alert(buffer);
|
|
|
02/04/2016, 15:07
|
#7
|
elite*gold: 0
Join Date: Apr 2010
Posts: 9,696
Received Thanks: 1,811
|
Quote:
Originally Posted by Devsome
berechnet das Ergebnis immer wieder *2 so oft wie die Zahl nach dem << (ich würde mal eine Art for-schleife sagen)
|
So könnte man es natürlich auch machen. Und ja, Problem ist anscheinend gelöst
Edit: Grad gemerkt, dass ich in .NET genauso einfach "int i = 97 << 8" benutzen kann..
|
|
|
02/05/2016, 11:09
|
#8
|
elite*gold: 0
Join Date: Jun 2010
Posts: 3,406
Received Thanks: 2,024
|
?
Bitwise And mit 255 und shift um 8
|
|
|
 |
Similar Threads
|
Kurze OT Frage bzgl. Skype
09/21/2015 - Off Topic - 16 Replies
Jo,
wollte wissen ob Skype bei euch geht.
Bei einem Kollegen und mir läd es einfach die ganze zeit und er versucht sich zu verbinden aber es kommt nix.
Ist das nur Zufall oder auch bei euch so?
|
kurze noob frage bzgl. DT
01/02/2013 - Metin2 - 6 Replies
Hi,
vorab ich habe schon sehr lange nicht mehr Metin2 gespielt. Hab nun mal wieder etwas gespielt. Ich war hauptsächlich DT um mir immer wieder meine Sachen zu uppen beim DT-Schmied.
Nun meine Frage:
Ich sehe häufig, dass manche High's (im 80/90er bereich) einfach wie aus dem Nichts in der 4.Ebene (Schlüsselebene) auftauchen, obwohl sie auf den vorherigen Ebenen überhaupt nicht anwesend waren. Vielleicht bilde ichs mir auch immer ein, aber ich glaube ein 99er z.B. würde mir schon in den...
|
Kurze Erklärung zu Hacks
10/17/2010 - Wolfteam - 6 Replies
Ich glaube irgendjemand muss nocheinmal ein Tutorial machen, wie man einen WolfTeam Hack benutzt das werde ich übernehmen da zuviele Leute in Foren schreiben dass sie den Hack nicht öffnen können blablabla ...
Als erstes sucht ihr euch einen Wolfteam hack der funktioniert z.B. der hier :
http://www.elitepvpers.com/forum/wolfteam/788933-w olfteam-wallhack-gefunden.html
Downloadet ihn (man benötigt WinRar) und schaltet am besten eueren Antiviren scanner aus da soziemlich jeder Hack als...
|
All times are GMT +1. The time now is 01:55.
|
|