Verketten eines Variablenwerts mit einem bytes32 [duplizieren]

Ich verwende Oraclize für die Zufälligkeit. Der Bereich der Zufallszahlen, die ich möchte, hängt von einer Variablen ab maxNumberund wird sein 0 - maxNumber.

Wenn Sie nach rechts von meinem Code-Snippet unten scrollen, sehen Sie, maxNumberwas ich intuitiv versucht habe, mit zu verketten +.

Das funktioniert natürlich nicht und ich erhalte einen Compiler-Fehler, da ich nicht mit einem bytes32 konkatieren kann.

Was ist der richtige Weg, um in dieser Situation zu concatieren?

bytes32 queryId = oraclize_query(
            "nested", 
            "[URL] ['json(https://api.random.org/json-rpc/1/invoke).result.random[\"data\"]', '\\n{\"jsonrpc\": \"2.0\", \"method\": \"generateIntegers\", \"params\": { \"apiKey\": \"keyGoesHere\"}\", \"n\": 1,\"min\": 0, \"max\":'"+maxNumber-1+"', \"replacement\": true }, \"id\": 14215${[identity] \"}\"}']",
            gasForOraclize
        );

Antworten (1)

Verwenden Sie die uint2string-Methode, um die Variable, die eine Zahl (maxNumber) enthält, in eine Zeichenfolge umzuwandeln. Wenn Sie den maximalen Bereich = maxNumber - 1 dekrementieren möchten, maxNumber vor der Oraclize-Abfrage wie unten gezeigt.

uint maxNumber -= 1;

oraclize_query(
        "nested", 
        "[URL] ['json(https://api.random.org/json-rpc/1/invoke).result.random[\"data\"]', '\\n{\"jsonrpc\": \"2.0\", \"method\": \"generateIntegers\", \"params\": { \"apiKey\": \"keyGoesHere\"}\", \"n\": 1,\"min\": 0, \"max\": uint2str(maxNumber), \"replacement\": true }, \"id\": 14215${[identity] \"}\"}']",
        gasForOraclize
    );
Danke. Das funktioniert jedoch nicht. In Ihrem Beispiel befindet sich der Variablenname in einem Zeichenfolgenliteral. ... Ich müsste den Wert dieser Variablen irgendwie verketten, oder?
Oh ok, ich glaube, diese Antwort kann Ihnen dann helfen ethereum.stackexchange.com/a/28671/33496 , in diesem Beispiel verwenden sie strConcat und lassen die Oraclize-Abfrage 3 verschiedene Zeichenfolgen erstellen, die sie dann verketten