Concatenar un valor de variable a bytes32 [duplicado]

Estoy usando Oraclize para la aleatoriedad. El rango de números aleatorios que quiero depende de una variable maxNumber, y lo será 0 - maxNumber.

Si se desplaza hacia la derecha de mi fragmento de código a continuación, verá maxNumbercuál intenté concatenar intuitivamente usando +.

Por supuesto, eso no funciona y obtengo un error de compilación ya que no puedo conectarme a bytes32.

¿Cuál es la forma correcta de concatenar en esta situación?

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
        );

Respuestas (1)

Utilice el método uint2string para convertir la variable que contiene un número (maxNumber) en una cadena. Si desea hacer que el rango máximo = maxNumber - 1 decremente maxNumber antes de la consulta oraclize como se muestra a continuación.

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
    );
Gracias. Sin embargo, eso no funciona. En su ejemplo, el nombre de la variable está dentro de un literal de cadena. ... necesitaría concatenar el valor de esa variable de alguna manera, ¿no?
Oh, está bien, creo que esta respuesta puede ayudarlo entonces ethereum.stackexchange.com/a/28671/33496 , en ese ejemplo usan strConcat, y hacen que la consulta oraclize 3 cadenas diferentes que luego concatenan