#Si ya el string es por debajo un Vecu8
1 messages · Page 1 of 1 (latest)
Creo que no termino de entender tu punto TBH. Lo que intento es convertir esto : String = "11" a esto : u8 = 11 pero me estás diciendo que realmente lo convierte a : [u8;2] = [49, 49], estoy en lo correcto?
Exacto, por debajo es eso pero tu al estar tomándolo como un string y checkeando un char por delante el 11 en lugar de ser un [49,49] que simbolizan 2 números 1 se vuelve un 11 porque dentro del u8 cabe perfectamente
Al trabajar con ASCII es mucho mejor manejarlo a nivel bytes o char sin adelantarse, cada char y byte tiene su razón, por mas que en el string puedas ver un 11 eso es a tu interpretación, el buffer contiene dos bytes que en ascii simbolizan un 1
Yo el enfoque de la iteracion lo cambiaría, en lugar de un while usar un for, iterar sobre lo que tu creas conveniente (a mi parecer es mejor iterar sobre un string.as_bytes()) e ir manejando a nivel de bytes el ascii challenge
Por que while y no for? Porque el while no te hace un intoIterator, por lo tanto tu al iterar una estructura de datos como el string tienes que handlear el Item, en cambio con un for char o un for byte ya sabes que iteras sobre string usando un char o un u8 dependiendo de qué elijas
Osea, estaría conviertiendo el : String = "99" a :[u8; 2] = [57, 57], pero como me sugieres utilizar el for estaría iterando cada número 1 a 1 pero eventualmente quiero convertir ese "99" original en una "c"
Considerando que el input original es un String de códigos ascii bien pegaditos (like "123432432") y necesito poder validar de alguna manera que lo que quiero convertir es un código de dos o tres dígitos
Pero con el for estaría iterando el input letra por letra
Me estoy perdiendo de algo xDD
El tema es que el buffer a encodear o decodear no es un string xD lo que pasa es que lo ves como string cuando enrealidad un buffer es un conjunto de bytes. Ejemplo input [u8] = [57,57] son dos números 9, no un 99 en ascii, [u8] = [104] es una c en ascii
@upbeat moth Entonces se compararia el valor de los bytes como vec y no la cadena verdad?
Tu lo que ves cuando haces un cat por ejemplo a un bin, no es mas que un u8.to_string(), si ves dos 1 juntos no significa que el valor en bytes sea 1 y 1 si no que por debajo en bytes significa dos 49 juntos
Exacto, un string no es mas que un conjunto de bytes interpretados a string, que en tu string diga 1 no significa que en bytes sea 1 el valor, si no que es 49
Y cuando comparan strings en sí lo que se compara es b"some string" == b"other string" dado que el procesador no tiene la capacidad de comparar letras, solo nums
Ya había avisado que las strings eran un dolor de cabeza no?
Y a que va todo esto? Que no es lo mismo hacer un "11".parse::<u8>() que un "1".parse::<u8>() dos veces, a nivel de bytes y ascii en el primero te comiste 2 bytes para armar una string, en el segundo solo 1, que a fin de cuentas es lo mismo en caso ASCII? si porque por default son u8, pero en caso de UTF 16? no sería lo mismo
Las UTF 16 ocupan dos bytes, y el encode o decode de las mismas si tu te adelantas la iteracion te puede acomplejar en algunos casos, en los casos de tener strings o buffers con distintos datatypes o formatos puede generar problemas
You're right, creo que me expliqué mal.
Recuerda que el challenge 2 lo que te da de input son números o código ascii decimales (aunque como String) y el objetivo es convertir esos números en letras para descifrar el mensaje, entonces según entiendo tu sugerencia es convertir esos códigos acsii nuevamente en... códigos xD
Y ahí es donde me explota la cabeza
@cosmic cove y esos codigos en letras 
Me interesaría ver tu solución cuando lo tengas listo, si lo veo entendería xd
Pero en fin, tu OneLine killer en este caso sirve? Si. Esta bien? Hombre, adelantarte en el encode/decode nunca está bien, o el salirte, si dice ascii por default es UTF-8 simplificando la comparativa, no hay motivo por el cual adjuntar 2 o 3 bytes y tratar de parsearlos a u8 porque entran dentro del mismo en algunos casos xD
Mañana tengo que armar una shared lib de Linux para recibir PoSh class y guardarlas en una DB con serde según los campos que me interese
pero intento ir adelantando en tiempos libres los challenges
Obviamente la clase la exportó con protocolos de red
así la puedo enviar entre sys pero es para un proyecto de automatización de Drivers en instalación de Windows, así que es algo small/mid size, si no me toma todo el día la implementación MVP les doy el challenge este
Okey, gracias por la explicación @upbeat moth
Por mi parte puedo esperar, tampoco te presiones
Si igual tomate tu tiempo, hechando a perder se aprende dice el dicho
Pero bueno, el challege pasa porque en sí este code es ascii y no tiene otro tipo de chars o datatypes dentro xD Pero no se adelanten, iteren uno por uno y hagan clean code, los oneliners están bien para cosas entendibles y sin unwraps 
Porque donde el oneliner tenga 2 o más unwraps y el error les salga en esa línea entenderán el porque se usa early error handling o guards 
@upbeat moth Errores, warning y mas warnings nos esperan 
Well un placer, debería dormir