Fórum XOR #271641
09/03/2005
0
Estou com um problema: preciso utilizar a operação X xor Y, mas o X e o Y são strings (ex.: CASA), e este operador só compara Integer, e não é possível converter este tipo de string (CASA) em Inteiro!!!
Como posso fazer??
Obrigada!
Fatima
Curtir tópico
+ 0Posts
09/03/2005
Massuda
Gostei + 0
09/03/2005
Fatima
Gostei + 0
09/03/2005
Massuda
function EmbaralhaComXor(S1, S2: string): string; var I: Integer; begin Result := ´´; for I := 1 to Length(S1) do Result := Result + Chr(Ord(S1[I]) xor Ord(S2[I])); end;
Gostei + 0
09/03/2005
Massuda
Gostei + 0
09/03/2005
Fatima
for i:= 1 to Length(Str1) do
begin
Str1[i]:= Chr(Ord(Str1[i]) xor Ord(Str2[i]));
end;
E ele naum consegue converter nenhuma letra, mas fiz o teste com número: ´1´ e deu certo!! >> Mas preciso q seja com letra!!
** Eu apenas tento comparar duas strings através da operação XOR retornando uma outra string!! Naum sei o q pode estar errado!!
Gostei + 0
09/03/2005
Massuda
var I: Integer; S1: string; S2: string; ... S1 := ´CASA´; S2 := ´RISO´; for I := 1 to Length(S1) do S1[I] := Chr(Ord(S1[I]) xor Ord(S2[I]));
Mas tem o seguinte detalhe: o resultado em S1 é uma string que, na maior parte dos casos, irá conter caracteres não imprimíveis (irá aparecer um caractere ´quadradinho´ ou lixo).
Gostei + 0
09/03/2005
Beppe
Gostei + 0
09/03/2005
Motta
Gostei + 0
10/03/2005
Kapak
1-Tudo que está em s1 e não em s2.
2-Tudo que está em s2 e não em s1.
Bom, se for isto, acredito que fazendo um bitwise xor do valor ordinal de cada caracter, não servirá p/ nada.
Respondendo ao colega Motta, xor também é utilizado em cálculos de CRC que também é um tipo de criptografia, mas de validação.
Gostei + 0
10/03/2005
Massuda
Gostei + 0
10/03/2005
Beppe
Regra de negócio? Mim naum falar seu língua... :oops: Mas o operador XOR pode ser usado para implementar uma lista duplamente encadeada com apenas um ponteiro por nó.
Também não tinha me tocado disso. Com sets dá pra fazer de forma eficiente, i. e., S3 := (S1 - S2) + (S2 - S1). O problema com esta implementação é a impossibilidade de se representar multi-sets(conjuntos com elementos repetidos). Aí tem que ser uma string ou lista ordenada.
Pode sim. A xor B = A and not B or B and not A. Acredito que esta seja a forma minimalista.
Gostei + 0
10/03/2005
Massuda
Gostei + 0
10/03/2005
Motta
Gostei + 0
11/03/2005
Beppe
http://en.wikipedia.org/wiki/Xor_linked_list
Em suma:
- eficiente em espaço
- ineficiente em tempo
- não trabalha com GC´s pró-ativos(proibem ponteiros calculados)
Gostei + 0
11/03/2005
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)