Forum > Spanish
sumar ascii como hex
mav:
Hola.
Como podria hacer algo así:
Nombre:string;
...
Nombre := mayoraprendiendo;
..sumar el valor en hexadecimal de cada segunda letra de nombre y mostrar el resultado en hexadecimal.
Saludos :)
lucamar:
Suena como si fueran deberes así que mejor que código, una pequeña explicación: Recorre la cadena en un bucle como si fuera un array y, por cada índice par, toma el código de la letra con Ord() y súmalo al total. Depués, convierte el total en hexa con IntToHex().
Si no son deberes, dilo y te paso algo de código, aunque debería ser bastante fácil, por no decir trivial. ;)
Por cierto, deja de ser trivial (aunque sigue siendo fácil) si la cadena es en algún tipo de Unicode: UTF-8, UnicodeString, WideChar, etc.
mav:
Hola, no son deberes, son ejercicios que intento hacer para aprender desde cero a mis sesenta y alguno años, es un keygenme de los que circulan por ahi que he resuelto y el algoritmo es el siguiente:
1.- 10 o mas caracteres para nombre (no conoceriamos el tamaño del array)
2.- Toma el primero ,el tercero y luego cada segundo número (osea va sumando los que estan en posiciones impares 1,3,5,7...etc) , y se guarda el resultado (siempre el hex de los ascii)
3.- Toma el número que hemos tecleado le suma una constante que siempre es el producto
de 19*16 = 226 en hexadecimal.El número tecleado es el que quiero hacer aparecer con el programa
4.- Compara el resultado de esta suma con el resultado de la suma del punto 2.
si son iguales todo bien, si no que vuelvas otra vez a intentarlo.
..pero para mi es complejo..
Gracias por contestar
Saludos
lucamar:
Vale, perdona; es que sonaba un montón como el típico ejercicio de clase.
Imagino que no quieres el problema completo resuelto, así que este código responde sólo a tu pregunta inicial, aunque tengo una pequeña duda:
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---{ Si sólo quieres la suma, hazle devolver un Integer }function TotalEven(const sv: AnsiString): AnsiString;var Total: Integer = 0; i: Integer;begin for i := 1 to Length(sv) do if Odd(i) then Total := Total + Ord(sv[i]); Result := Total.ToHexString(0); {Result := Total; Si sólo quieres la suma.}end;
La duda es qué quieres decir con "usando siempre el hexa": ¿quieres decir el valor de código o la representación en hexa del mismo?
Quiero decir, aunque esté en hexadecimal un número es un número, así que puedes trabajar con él normalmente y convertir a hexa al final, para mostrarlo. Pero si te refieres a la representación en sí, como cadena ('3F', en vez de $3F o 63 decimal) las cosas cambian un poco.
mav:
Tienes razón, da lo mismo sumar los caracteres, como hexadecimal, o decimal, al final se convierten en lo que deseemos.
Y no, no queria el problema entero resuelto, por eso preguntaba sólo esa parte para darme una idea de como continuar,
muchas gracias.
Si no soy capaz de continuar, preguntaré alguna cosa mas :) :) :) .
El 'armar' los loops y los arrays-matrices es lo más trabajo me está costando.
Gracias.
Navigation
[0] Message Index
[#] Next page