Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Edgamer63 en Septiembre 20, 2018, 02:52:15 PM

Título: Buffer <-> String
Publicado por: Edgamer63 en Septiembre 20, 2018, 02:52:15 PM
Hola! :D , quisiera saber como convertir un buffer a String y viceversa.

Gracias :3 .

PD: Según hasta donde sé, se usa de u8 (8 bit), pero no sé aún como implementarlo XD .
Título: Re:Buffer <-> String
Publicado por: BssString en Septiembre 20, 2018, 03:02:54 PM
Hola Edgamer63

No es necesario convertir un buffer en string.
Si quieres leer una string que has guardado en un buffer, puedes usar:
var value = buffer_read(buffer_id,buffer_string)
Esa función leerá la string que sigue de la posición de lectura.
Favor notar que los buffers van guardando la información como Stacks, tienes que elegir que byte quieres leer usando buffer_seek para leer la información correcta en la posición correcta.

Si quieres enviar el buffer a través del Networking, es enviarlo y ya con network_send_raw o network_send_packet.

Si quieres guardar el buffer en un archivo, es usar buffer_save y listo.

Si quieres "Literalmente" convertir el buffer completo en string, puedes usar buffer_base64_encode, pero la string es no legible hasta que lo conviertas a buffer de nuevo.

Los buffers ocupan el cache, recuerda eliminarlos cuando no sean necesarios con buffer_delete

Saludos
Título: Re:Buffer <-> String
Publicado por: Edgamer63 en Septiembre 20, 2018, 03:18:12 PM
Eso Se puede almacenar en un array? :/
Título: Re:Buffer <-> String
Publicado por: BssString en Septiembre 20, 2018, 04:16:44 PM
Hola Edgamer63

Sí se puede, pero no es necesario porque el buffer ya tiene una estructura de array. Solamente debes leer el dato correcto en el mismo orden que lo guardaste.
Ej: si guardaste:
buffer_write(buffer,buffer_u8,10) //El num 10 como u8
buffer_write(buffer,buffer_string,player_name) //El nombre como string
buffer_write(buffer,buffer_u16,2000) //El num 2000 como u16


Debes leerlos en el mismo orden:
buffer_seek(buff, buffer_seek_start, 0) //Regresa la posición de lectura/escritura del buffer al inicio.
array[0] = buffer_read(buffer,buffer_u8) //Lee el 10
array[1] = buffer_read(buffer,buffer_string) //Lee el nombre del player
array[2] = buffer_read(buffer,buffer_u16) //Lee el 2000


O en vez de guardar la info en un array, lo puedes asignar directamente a la variable correspondiente.

Saludos
Título: Re:Buffer <-> String
Publicado por: Clamud en Septiembre 22, 2018, 05:00:39 AM
Puede ser útil saber que las strings se guardan en formato UTF-8, por lo que algunos símbolos ocupan mas de 1 byte, por ejemplo la ñ ocupa 2 bytes.