Integer zu Bitfeld als Liste

8

Ich habe eine Methode erstellt, um ein int in ein Bitfeld (in einer Liste) zu konvertieren, und es funktioniert, aber ich bin mir sicher, dass es elegantere Lösungen gibt - ich habe es nur zu lange angeguckt.

Ich bin neugierig, wie würden Sie ein int in ein Bitfeld umwandeln, das in list dargestellt ist?

%Vor%     
tMC 25.04.2012, 18:52
quelle

4 Antworten

22

Wie wäre es damit:

%Vor%

Das gibt Ihnen

%Vor%

Dies funktioniert jedoch nur für positive ganze Zahlen.

BEARBEITEN:

Die Konvertierung in int mit int() ist hier etwas zu viel. Das ist viel schneller:

%Vor%

Siehe die Zeiten:

%Vor%     
Tim Pietzcker 25.04.2012, 18:54
quelle
16
___ qstntxt ___

Ich habe eine Methode erstellt, um ein bin in ein Bitfeld (in einer Liste) zu konvertieren, und es funktioniert, aber ich bin mir sicher, dass es elegantere Lösungen gibt - ich habe es nur zu lange angeguckt.

Ich bin neugierig, wie würden Sie ein bit_length in ein Bitfeld umwandeln, das in %code% dargestellt ist?

%Vor%     
___ answer10322105 ___

Versuchen Sie

%Vor%

Dies funktioniert nicht für negative n obwohl und wie Sie sehen, gibt Ihnen eine Liste von Zeichenfolgen

    
___ answer30449601 ___

Ich mache das für mein Programm, wo Sie eine Vorlage angeben, um Ihre Werte von einem int zu erhalten:

%Vor%

Verwendung
Geben Sie in der Vorlage Ints für Ihre Bitgrößen an:

%Vor%

oder Sie können die Bitgröße für jeden benötigten Wert mit Strings angeben: (noob friendly)

%Vor%

EDIT: und umgekehrt: (separater Code)

%Vor%

der Code:

%Vor%

EDIT2: schneller Code ^

    
___ tag123list ___ Liste kann sich beziehen auf: eine verkettete Liste (eine geordnete Menge von Knoten, die jeweils auf ihren Nachfolger verweisen) oder eine Form eines dynamischen Arrays. Um nicht für HTML-Listen verwendet zu werden, verwenden Sie stattdessen [html-lists]. ___ antwort10322122 ___

Dies verwendet nicht %code% :

%Vor%

und so behandelt man jede ganze Zahl:

%Vor%

Siehe %code% .

Wenn der Index 0 der Liste dem lsb des Int entsprechen soll, ändern Sie die Bereichsreihenfolge, d. h.

%Vor%

Beachten Sie auch, dass die Verwendung von n.bit_length () ein Fehlerpunkt sein kann, wenn Sie Binärwerte mit fester Länge darstellen möchten. Es gibt die minimale Anzahl von Bits zurück, um n darzustellen.

    
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123bitfields ___ Ein Bitfeld wird verwendet, um mehrere logische Werte kompakt als eine kurze Reihe von Bits zu speichern, wobei jedes der einzelnen Bits getrennt adressiert werden kann. ___ answer10322018 ___

Wie wäre es damit:

%Vor%

Das gibt Ihnen

%Vor%

Dies funktioniert jedoch nur für positive ganze Zahlen.

BEARBEITEN:

Die Konvertierung in %code% mit %code% ist hier etwas zu viel. Das ist viel schneller:

%Vor%

Siehe die Zeiten:

%Vor%     
___ qstnhdr ___ Integer zu Bitfeld als Liste ___
georg 25.04.2012 19:02
quelle
4

Versuchen Sie

%Vor%

Dies funktioniert nicht für negative n obwohl und wie Sie sehen, gibt Ihnen eine Liste von Zeichenfolgen

    
snugglo 25.04.2012 19:01
quelle
0

Ich mache das für mein Programm, wo Sie eine Vorlage angeben, um Ihre Werte von einem int zu erhalten:

%Vor%

Verwendung
Geben Sie in der Vorlage Ints für Ihre Bitgrößen an:

%Vor%

oder Sie können die Bitgröße für jeden benötigten Wert mit Strings angeben: (noob friendly)

%Vor%

EDIT: und umgekehrt: (separater Code)

%Vor%

der Code:

%Vor%

EDIT2: schneller Code ^

    
Tcll 26.05.2015 04:40
quelle

Tags und Links