- Ranking :
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :x 0
x 0
x 0
Reputação : 47
Prêmios: 0
: 0
: 1
Hexadecimal
em Seg 30 Jan 2012, 20:29
Olá pessoal, eu estou com uma duvida aqui, como é que faz pra tranformar numeros em hexadecimal e vice-verça? Quando eu digo em hexadecimal, quero dizer uma string, pois se usarmos números normais (como $FF00FF) o GM iria traduzir para numero normal.
Eu já achei na net como fazer isso, mas você tem que fazer a conta. Eu queria alguma coisa em GML.
Pra quem não sabe, para converter é preciso isto:
Eu já achei na net como fazer isso, mas você tem que fazer a conta. Eu queria alguma coisa em GML.
Pra quem não sabe, para converter é preciso isto:
- Código:
num/16=num > resto = val1
num/16=num > resto = val2
E assim por diante até que o num vire 0. Aí eu pego os restos, transformo pra hexa (tipo, 10 = A, 11 = B, etc...)
Eu vou colocando os restos em ordem contraria:
hexa = val3 + val 2 + val 1
Atenção, não é pra somar eles, é só pra juntar xD
- Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :x 0
x 0
x 0
Reputação : 121
Prêmios: 1
: 0
: 3
Re: Hexadecimal
em Qui 23 Fev 2012, 10:26
Wow, demorei muito mais do que deveria pra responder essa. É que toda vez que eu estava chegando perto de testar a idéia, acontecia alguma coisa.
Basicamente, você vai dividir por 16 e arredondar pra baixo, até o número dar zero. A cada vez que fizer isso, pegue o RESTO da divisão, multiplique por 16 e armazene.
Junte todos os restos multiplicados por 16, transforme em letras se for preciso e pronto.
Aqui, um script que eu fiz usando mod e div, o que elimina a trabalheira de re-multiplicar por 16 e de arredondar pra baixo.
Basicamente, você vai dividir por 16 e arredondar pra baixo, até o número dar zero. A cada vez que fizer isso, pegue o RESTO da divisão, multiplique por 16 e armazene.
Junte todos os restos multiplicados por 16, transforme em letras se for preciso e pronto.
Aqui, um script que eu fiz usando mod e div, o que elimina a trabalheira de re-multiplicar por 16 e de arredondar pra baixo.
- Código:
//pede o número a ser convertido
numero = -1;
while(numero < 0){
numero = real(get_string("digite um número", "0"));
}
n = 16; //a base numérica pra qual o decimal será convertido (pode ser alterado pra 2, se quiser uma conversão pra binário ou mesmo 10, se quiser testar o script)
resultado = ""; //uma string vazia
while(numero > 0){
val = numero mod n; //a última unidade do número atual na nova base
numero = numero div n; //reduz o número atual pra próxima iteração
if (val < 10){ //se existir caractere cardinal para o número
resultado = string_insert(string(val), resultado, 0); //insere esse caractere no começo da string
}
else{ //se carecer de uma letra do alfabeto
resultado = string_insert(chr(val+55), resultado, 0); //insere a tal letra no começo da string
//(A equivale a 10 e, na tabela ascii, a 65, por isso somamos 55)
}
}
show_message(resultado)
- Ranking :
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :x 0
x 0
x 0
Reputação : 47
Prêmios: 0
: 0
: 1
Re: Hexadecimal
em Qui 23 Fev 2012, 22:54
Sabia que so o saim responderia isso xD
Acho que o unico problema meu era de pegar o resto da divisao (nao sei do operador mod), sei la, talvez dividir 1 por 16 multiplicar pelo decimal do numero e... Chega.
Flws!
Acho que o unico problema meu era de pegar o resto da divisao (nao sei do operador mod), sei la, talvez dividir 1 por 16 multiplicar pelo decimal do numero e... Chega.
Wow, agora da pra converter ate binario? Nossa que poderoso o script! Com certeza estara nos creditos saim! xD(pode ser alterado pra 2, se quiser uma conversão pra binário ou mesmo 10, se quiser testar o script)
Flws!
- Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :x 0
x 0
x 0
Reputação : 121
Prêmios: 1
: 0
: 3
Re: Hexadecimal
em Sex 24 Fev 2012, 08:54
É que só eu fico garimpando perguntas velhas que ainda não foram respondidas...@luiz_eldorado escreveu:Sabia que so o saim responderia isso xD

Nem tanto. Conversão entre bases sempre usa a mesma teoria, então o script ser flexível não é mérito meu, mas da matemática em si.@luiz_eldorado escreveu:Wow, agora da pra converter ate binario? Nossa que poderoso o script!
Se quiser mesmo usar outras bases, sugiro entrar com a base como argumento. Aí, sim, o script ficará flexível.
Não precisa, mas fico agradecido!@luiz_eldorado escreveu:Com certeza estara nos creditos saim!

Como o tópico foi resolvido, está sendo trancado. Se quiser reabrir, entre em contato com a moderação.
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum