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.
- Rust
- JavaScript
- Python
use soroban_sdk::{Address, Bytes, Env};
pub fn bytes_to_address(bytes: Bytes) -> Address {
Address::from_string_bytes(&bytes)
}
const StellarSdk = require("@stellar/stellar-sdk");
// Example bytes value
const rawBytes = Buffer.from(
"99db3e3c18e3ae1640bf56823389f811b53ac9c01b2b91eac5c52cba60c5c9fe",
"hex",
);
// Convert bytes to an account Address
const addressFromBytes = StellarSdk.Address.account(rawBytes);
addressFromBytes.toString();
// Convert from bytes to a string address
const addressFromBytes = StellarSdk.Address.contract(rawBytes);
addressFromBytes.toString();
from stellar_sdk.address import Address
# Example bytes value
raw_bytes = bytes.fromhex('99db3e3c18e3ae1640bf56823389f811b53ac9c01b2b91eac5c52cba60c5c9fe')
bytes_to_address = Address.from_raw_account(raw_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.
- Rust
- JavaScript
- Python
use soroban_sdk::{String, Bytes, Env, FromVal};
pub fn bytes_to_string(env: &Env, bytes: Bytes) -> String {
String::from_val(env, &bytes.to_val())
}
const StellarSdk = require("@stellar/stellar-sdk");
// Example bytes value
const rawBytes = Buffer.from(
"99db3e3c18e3ae1640bf56823389f811b53ac9c01b2b91eac5c52cba60c5c9fe",
"hex",
);
// Convert bytes to string
const bytesToString = rawBytes.toString("hex");
from stellar_sdk.address import Address
# Example bytes
raw_bytes = b'99db3e3c18e3ae1640bf56823389f811b53ac9c01b2b91eac5c52cba60c5c9fe'
# Convert bytes to string
bytes_to_string = raw_bytes.decode('utf-8')
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.
- Rust
- JavaScript
- Python
use soroban_sdk::{Bytes, Env, FromVal, Val};
pub fn bytes_to_val(env: &Env, bytes: Bytes) -> Val {
Val::from_val(env, &bytes.to_val())
}
const StellarSdk = require("@stellar/stellar-sdk");
// Example bytes value
const rawBytes = Buffer.from(
"99db3e3c18e3ae1640bf56823389f811b53ac9c01b2b91eac5c52cba60c5c9fe",
"hex",
);
// Convert bytes to xdr.ScVal
const bytesToScVal = StellarSdk.xdr.ScVal.scvBytes(rawBytes);
import stellar_sdk
# Example bytes value
raw_bytes = b'example_bytes_data'
# Convert bytes to ScVal
sc_val = stellar_sdk.scval.to_bytes(raw_bytes)
Guías en esta categoría:
📄️ Convertir una dirección a otros tipos
Convertir una dirección a otros tipos
📄️ Convertir de bytes a otros tipos
Convertir de bytes a otros tipos
📄️ Convertir un ScVal a otro tipo
Convertir un ScVal a otro tipo
📄️ Convertir una cadena a otros tipos
Convertir una cadena a otros tipos