Saltar al contenido principal

Convertir una cadena a otros tipos

Las cadenas son una secuencia de caracteres utilizados para representar texto legible. Se utilizan para almacenar y manipular información basada en texto, como nombres de funciones, argumentos, datos clave-valor e interfaces con sistemas externos. Las cadenas a menudo pueden necesitar ser convertidas a otros tipos de datos para un procesamiento y almacenamiento eficientes.

Cadena a bytesN

nota

Las conversiones de String a Bytes y de Bytes a String aún no son admitidas y producirán un panic si se intentan. Estas conversiones estarán disponibles en el Protocolo 23 mediante CAP-69, pero aún no están disponibles en Mainnet.

Consulta la discusión aquí.

Algunos sistemas utilizan formatos binarios donde los datos necesitan ser representados como un arreglo de bytes de longitud fija para almacenamiento o procesamiento. Por ejemplo, hashes o identificadores de longitud fija. Convertir cadenas a un tamaño de bytes fijo asegura que los datos se ajusten a las restricciones de tamaño requeridas.

use soroban_sdk::{String, BytesN, Env, FromVal};

pub fn string_to_bytesN(env: &Env, string: String) -> BytesN<32> {
BytesN::from_val(env, &string.to_val())
}

Cadena a dirección

Una dirección recibida en una entrada de usuario puede ser de tipo cadena y necesitarías convertirla a un tipo dirección para realizar validaciones, transacciones u otras operaciones dentro de tu contrato inteligente.

use soroban_sdk::{Address, Env, String};

pub fn string_to_address(string: String) -> Address {
Address::from_string(&string)
}

Cadena a ScVal

Al llamar a funciones o métodos que esperan tipos ScVal, necesitas convertir tus datos de cadena a ScVal para que la llamada sea exitosa. Por ejemplo, si tu contrato inteligente necesita almacenar o manipular una cadena de entrada de usuario dentro de su estado o utilizarla como parte de su lógica, deberías convertir la cadena a un tipo ScVal para integrarla con las operaciones del contrato.

use soroban_sdk::{String, Env, Val};

pub fn string_to_val(env: &Env, string: String) -> Val {
string.to_val()
}