[Resolvido] Preciso de ajuda com conversão decimal X hexadecimal

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Resolvido] Preciso de ajuda com conversão decimal X hexadecimal

Mensagem por Convidad em Qui 29 Abr 2010, 02:01

Eu fiz um script que retorna uma string do valor hexadecimal de um número decimal qualquer. Eu já sei que dá pra usar o cifrão em gml quando o valor a ser trabalhando é hexadecimal ($F0A0EE)... Mas o que eu quero é o seguinte: eu preciso escrever esse valor hexadecimal em um arquivo de texto!

Agora é que vem o "porém". Eu fiz um script que trabalha só com um valor decimal pequeno, no máximo 255, que é o máximo que um byte pode assumir. Fiz isso porque tem que ser assim mesmo, porque depois eu vou usar esse arquivo escrito em hexa para várias outras coisas...

Só que: o script que eu fiz é lento! Quando eu mando o programa ler byte a byte de um arquivo qualquer e transformar esses valores em uma string hexa (pra escrever no outro arquivo que eu falei), ele demora pra caramba!

O que eu preciso?

Preciso de uma forma de converter um número decimal (menor que 255) em uma string hexadecimal desse mesmo valor de forma rápida, pois vai trabalhar lendo arquivos byte a byte! Eu queria fazer isso via gml, sem usar dll...


Última edição por Capitão Commando em Sab 01 Maio 2010, 06:09, editado 1 vez(es)

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: [Resolvido] Preciso de ajuda com conversão decimal X hexadecimal

Mensagem por vinians em Qui 29 Abr 2010, 11:32

Amigão, fiz uma função de conversão, testa ai e vê se ela está um pouco mais rápida.

var file_name, handle, i, size, byte, hexa, dig, result;
file_name = argument0;
handle = file_bin_open(file_name, 0);
size = file_bin_size(handle);
hexa = "";
//Vetor pra agilizar e nao precisar de IF
h[0]="0";h[1]="1";h[2]="2";h[3]="3";h[4]="4";h[5]="5";h[6]="6";h[7]="7";h[8]="8";h[9]="9";
h[10]="A";h[11]="B";h[12]="C";h[13]="D";h[14]="E";h[15]="F"
result := '';
for (i = 0; i < size; i +=1 )
{
byte = file_bin_read_byte(handle);
do {
rem = (byte mod 16);
byte = (byte div 16);
dig = h[rem];
hexa = dig + hexa;
} until (byte == 0)
result := result + hexa;
hexa := '';
}
file_bin_close(handle);
return ("$" + result);

Basta criar um script colocar esse codigo e usar como funcao.
hexa = funcao("arquivo.bin");

vinians

Ranking : Nota B
Número de Mensagens : 2490
Idade : 27
Data de inscrição : 18/09/2008
Notas recebidas : B-C-A-C
Reputação : 52
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 2
   : 1

http://xcreatorgames.weebly.com/

Voltar ao Topo Ir em baixo

Re: [Resolvido] Preciso de ajuda com conversão decimal X hexadecimal

Mensagem por Convidad em Qui 29 Abr 2010, 23:35

Valeu vinians!!! Cara ficou bem mais rápido sim (e ainda aprendi)!! Vou colocar créditos pra você no meu projeto aqui amigão! [Z¬D]

Convidad
Convidado


Voltar ao Topo Ir em baixo

Re: [Resolvido] Preciso de ajuda com conversão decimal X hexadecimal

Mensagem por Conteúdo patrocinado Hoje à(s) 04:02


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum