string a integer?
Hola Foristas se me presento una inquietud, necesito transformar un aray de char (tomado de memoria ) a Integer pero no encuentro nada y no entiendo la realacion en que delphi guarda un enetero a l disco
por ejemplo el numero 18 si lo guardo como archivo de entero me guarda en el archivo 0x12 0x00 0x00 0x00 y necesitaria saber la logica para poder tener apartir de los 4 bytes el entero. Desdea ya muchas gracias anticipadas |
me respondo ami mismo en c:
el numero 18 se guara en 4 bytes = 0x00 0x00 0x00 0x12 =(ord(Str1[1])*16777216)+(ord(Str1[2])*65536)+(ord(Str1[3])*256)+ord(Str1[4]) pero en delphi se graba al reves: 0x12 0x00 0x00 0x00 = (ord(Str1[4])*16777216)+(ord(Str1[3])*65536)+(ord(Str1[2])*256)+ord(Str1[1]) :D es algo tonto pero me tomo toda la mañana |
a caray... no pues que complejo para mis novatos conocimientos...
yo hiba a proponer la funcion "TryStrToInt" o "StrtoInt", pero veo que es más que solo eso..... |
El por que se escriben en ese orden, no es un asunto de delphi, es un asunto de intel.
Lee sobre Endianness y lo comprenderás. Hasta luego. ;) Edito: el artículo en inglés es mucho mas completo (como suele suceder): http://en.wikipedia.org/wiki/Endianness |
Hola, acertij022.
Yo he hecho algo así:
Dos cosas a tener en cuenta. [1] La endianess del tipo. No sé qué pasaría si el integer fuera big-endian... [2] El tipo de dato integer es genérico, y no necesariamente va a tener 32 bits... Sería más seguro usar Longint, que siempre va a tener 32 bits. Espero te sirva. Saludongos. |
La franja horaria es GMT +2. Ahora son las 22:55:53. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi