2013-01-22 3 views
1

RGB에서 Yxy 색상으로 변환을 구현하고 있고 의사 코드가 두 개의 float 변수에서 XOR (^) 연산을 실행하도록 인도합니다. 파이썬에서 어떻게 할 수 있습니까?^대한파이썬에서 float 사이의 XOR

지원되지 않는 피연산자 유형 (들) : :이 오류가 '유동'과 '플로트'

이 의사에서보세요 : http://www.easyrgb.com/index.php?X=MATH&H=02#text2.

+2

를 통해 이루어집니다 전원을인가? 게시물에 가이드를 링크하거나 포함 시키십시오. – phant0m

+4

의사 코드를 표시 할 수 있습니까? 그리고 아마도 XOR이 아닌 지수 (어떤 언어에서는'^'문자입니까?)일까요? –

+0

XOR 이외에 필요한 것을 할 수있는 또 다른 방법이 있습니다. –

답변

-1

비트 단위 연산자 만 정수에 적용 할 수 있습니다. 그래서 정수를 먼저 float로 변환하십시오.

+0

float에있는 int() 캐스트가 항상 정수 부분 –

+0

@SamueleMattiuzzo이기 때문에 정보가 손실되고 XOR에서 잘못된 결과가 발생합니다. 그 점이 있다면 'round (number, digits)'만 사용하십시오 – whatyouhide

+0

@ whatyouhide 그리고 XOR에 적합하지 않은 다른 플로트를 다시 얻을 수 있습니다. –

4

xoring 부동 소수점에 대한 내장 된 지원이 없습니다. 대신 당신은 부동 소수점 숫자로 기본적으로


내가해야 파이썬

에서 지원하는 64 비트 부동 소수점을, 즉, struct 모듈을

>>> from struct import pack, unpack 
>>> def xor_float(f1, f2): 
    f1 = int(''.join(hex(ord(e))[2:] for e in struct.pack('d',f1)),16) 
    f2 = int(''.join(hex(ord(e))[2:] for e in struct.pack('d',f2)),16) 
    xor = f1^f2 
    xor = "{:016x}".format(xor) 
    xor = ''.join(chr(int(xor[i:i+2],16)) for i in range(0,len(xor),2)) 
    return struct.unpack('d',xor)[0] 

>>> xor_float(10.25,10.25) 
0.0 
>>> xor_float(10.25,0.00) 
10.25 

참고이 예제는 가정를 사용하여 하나를 구현해야 이 문제를 해결하기 전에 의사 코드를 보았습니다. 의사 코드 캐럿 ^ 오히려 XOR보다 전력에 숫자를 제기 파이썬은 (를 포함하여 플로트)는 XOR이 의미 달성하도록되어 뭔지 알아 ** 또는 math.pow

관련 문제