Saltar al contenido principal

Convertir de bytes a otros tipos

Bytes es un tipo de arreglo contiguo que crece y contiene u8s. Pueden representar varios tipos de datos, incluyendo cadenas, direcciones u otra información. Convertir cualquier tipo de dato a bytes garantiza que los datos sean manejados de manera consistente por el entorno de ejecución de Soroban y los sistemas interactuantes.

Bytes a Dirección

Al recuperar datos almacenados en la blockchain, las direcciones pueden estar almacenadas en representación de bytes por razones de compactación y eficiencia. Los sistemas fuera de la cadena, como APIs, bases de datos o interfaces de usuario, generalmente esperan direcciones en un formato legible por humanos. En tales casos, necesitas convertir los bytes a un formato de dirección para asegurar la compatibilidad.

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

pub fn bytes_to_address(bytes: Bytes) -> Address {
Address::from_string_bytes(&bytes)
}

Bytes a Cadena

Al trabajar con datos binarios, puedes necesitar convertir ciertas porciones de los datos a un formato legible por humanos, como cadenas, para registro, depuración, procesamiento o visualización.

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

pub fn bytes_to_string(env: &Env, bytes: Bytes) -> String {
String::from_val(env, &bytes.to_val())
}

Bytes a ScVal

En un contrato inteligente de Soroban que interactúa con un servicio de oráculo externo para proporcionar datos de precios en formato de byte crudo, necesitarías convertir los bytes a ScVal para procesar y manipular los datos dentro de tu contrato.

use soroban_sdk::{Bytes, Env, FromVal, Val};

pub fn bytes_to_val(env: &Env, bytes: Bytes) -> Val {
Val::from_val(env, &bytes.to_val())
}