was eine gegebene Zahl in Zeichen umwandelt und es funktioniert gut
aber dann möchte ich auch eine umgekehrte Funktion davon, die bei jeder Ausgabe dieser Funktion genau die Eingabe zurückgibt, die eingegeben wurde, um diese Ausgabe zu erzeugen, und ich habe Folgendes versucht:
aber es funktioniert nicht richtig … toAlpha (728) produziert ‘aba’, aber toNum (‘aba’) produziert 1378 statt 728 …
Was habe ich falsch gemacht? Wie kann ich die Rückwärtsfunktion reparieren, damit sie richtig funktioniert?
Sie versuchen also, eine Zahl zur Basis 10 in die Basis 26 umzuwandeln, ist es das?
– Mathieu Dumoulin
5. Oktober 2011 um 15:57 Uhr
Was soll die ursprüngliche toAlpha-Funktion tun? Was ist das gewünschte Verhalten, wenn die Zahl über 25 liegt?
– Alex Turpin
5. Oktober 2011 um 15:57 Uhr
es wird zu Doppelbuchstaben, Dreifachbuchstaben usw. z. B.: 26 = aa, 27 = ab usw
– Lichtsäule
5. Oktober 2011 um 15:59 Uhr
Wenn ‘a’ Ihre 0 ist, sollte aa dann nicht auch 0 sein? Zumindest, wenn Sie nur versuchen, eine direkte Basis-26 mit Buchstaben anstelle von Zahlen zu implementieren.
– Hammerit
5. Oktober 2011 um 16:12 Uhr
Das gewünschte Ergebnis beider Funktionen ist wirklich unklar. Können Sie erklären, was die Funktionen genau ausgeben sollen und nach welchen Regeln?
Dies funktioniert nicht mit Ganzzahlen, die die Länge des Alphabet-Arrays überschreiten; zB “42”.
– kirgisisch
26. Mai 2016 um 10:37 Uhr
@kirgy Ich habe eine Antwort basierend auf diesem Fall gepostet, die mit ganzen Zahlen funktioniert, die die Länge des Alphabet-Arrays überschreiten.
– rvbarreto
18. März 2019 um 17:10 Uhr
Für einen Buchstaben wird die Zahl “0” gedruckt, es ist falsch, also sollte der neue Code lauten: echo array_search($letter, $alphabet)+1;
– Bbb
25. Dezember 2022 um 19:50 Uhr
Dies war die richtige Antwort auf die falsche Frage, seit die Frage gepostet wurde. Die Antwortwerte auf dieser Seite vermitteln Forschern eine unangemessene Botschaft. Diese Antwort sollte keine positive Bewertung haben, da sie den Auftrag nicht erfüllt.
– mickmackusa
26. Januar um 20:00 Uhr
Hammerit
Ich verstehe überhaupt nicht die Logik, die Sie in dieser Funktion verwenden möchten. Was Sie zu tun versuchen, scheint sehr seltsam zu sein (warum wird ‘a’ auf Null abgebildet und doch ‘aa’ auf 26 abgebildet?), Aber das scheint zu funktionieren. (Sie werden einige weitere Testfälle verwenden wollen, ich habe nur überprüft, ob es die richtige Ausgabe für den Fall ‘aba’ gibt.)
Zur Basis 10 ist der Nachfolger von 9 nicht 00. Warum also ist aa der Nachfolger von z?
– Hammerit
6. Oktober 2011 um 0:39 Uhr
Excel macht das. Vielleicht hat @pillarOfLight versucht, etwas mit Tabellenkalkulationen herauszufinden.
– Stéphane
13. September 2012 um 3:03 Uhr
$alphabet = range(‘a’, ‘z’);
– Westseite
9. Oktober 2012 um 20:51 Uhr
@Hammerite hat mich verwirrt, aber nach dem einzelnen Zeichen das zweite a In aa verschiebt dies von Basis 26 nach base 27 da es einen Positionswert hat (also az PLUS das Fehlen eines a = 27 Zeichen). Es ist als ob 001 101!
– Sei nett
6. November 2018 um 12:11 Uhr
Blöde Fragestunde. 1) Warum braucht man ` $alpha_flip = array_flip($alphabet);` und im Original gibt es eine Zeile $modulo;. Beides wirkt überflüssig. 2) Ich habe oben gefragt, werde es aber hier wiederholen: Was macht das %? (Ich habe Goog, PHP.net, SO usw. ausprobiert, aber die Suche mit a % ist ziemlich unterhaltsam.)
Tipp: Verwenden 97 anstatt 0x41 Und 96 anstatt 0x40 um Kleinbuchstaben zu erhalten. Oder verwenden strtolower() um das Ergebnis in Kleinbuchstaben umzuwandeln
– Philipp
31. Juli 2020 um 14:44 Uhr
Von Zahl zu Alphabet (mit A=0, B=1, etc…):
function toAlpha($num){
return chr(substr("000".($num+65),-3));
}
Mit der Funktion können Sie dasselbe vom Alphabet zur Zahl machen ord().
Wenn Sie 65 durch 97 ersetzen, erhalten Sie die Kleinbuchstaben.
Mason Lastkahn
Ihre Probleme kommen von Ihrer Karte. Schau dir das an:
Sie können dies so hoch ausführen, wie Sie möchten und Ihr Serverspeicher dies zulässt. Das PHP ist fehlerhaft, und (zumindest auf meinem Server) wenn Sie den Operator <= verwenden:
dann wird es den ganzen Weg abbilden [676]=> Zeichenkette(2) “yz”! Man muss nur damit spielen.
Ich wollte keinen Buchstaben zuordnen [0] Also habe ich einfach einen Titel hineingegeben. Natürlich können Sie es weglassen, wenn Sie 0 => a, 1 => b usw. wollen.
Sobald das Array korrekt ist, ist die Funktion trivial.
eine Linie : range('a', 'z')
– Panik
13. Mai 2015 um 14:03 Uhr
@ceadreak Dieser Bereich wird nichts aus befriedigen aa und darüber hinaus.
– mickmackusa
26. Januar um 19:55 Uhr
Unter Verwendung von Cyrils Antwort habe ich ein wenig für einen Fall mit mehr als einem Buchstaben ausgearbeitet.
Sie versuchen also, eine Zahl zur Basis 10 in die Basis 26 umzuwandeln, ist es das?
– Mathieu Dumoulin
5. Oktober 2011 um 15:57 Uhr
Was soll die ursprüngliche toAlpha-Funktion tun? Was ist das gewünschte Verhalten, wenn die Zahl über 25 liegt?
– Alex Turpin
5. Oktober 2011 um 15:57 Uhr
es wird zu Doppelbuchstaben, Dreifachbuchstaben usw. z. B.: 26 = aa, 27 = ab usw
– Lichtsäule
5. Oktober 2011 um 15:59 Uhr
Wenn ‘a’ Ihre 0 ist, sollte aa dann nicht auch 0 sein? Zumindest, wenn Sie nur versuchen, eine direkte Basis-26 mit Buchstaben anstelle von Zahlen zu implementieren.
– Hammerit
5. Oktober 2011 um 16:12 Uhr
Das gewünschte Ergebnis beider Funktionen ist wirklich unklar. Können Sie erklären, was die Funktionen genau ausgeben sollen und nach welchen Regeln?
– Anständiger Dabbler
5. Oktober 2011 um 16:14 Uhr