2015-01-08 2 views
1

나는 두 개의 응용 프로그램이 하나 파이썬PHP 하나 작성하고 모두 같은 MySQL의 데이터베이스를 사용합니다.어떻게 파이썬 변환 MySQL의 바이너리 (16)

일부 테이블의 공개 ID에 대해 바이너리 (16) 필드를 사용합니다 (이 방법은 변경할 수 없으며 이렇게해야합니다).

질문은 어떻게 파이썬이 이진 필드의 변환을합니까?

항목 중 하나를 예로 들어 보겠습니다.

PHP에서 (db로부터) 공개 ID의 값은 °입니까? WiCÄ'õ0Iò | -g입니다. 동일한 값이 SequelPro에 표시됩니다. 하지만 php myAdmin은 바이너리 필드보다 16 진수 함수를 사용하며 0bb09557691443c491f53049f27c9667을 보여줍니다. 이제 php myAdmin에 표시된 값으로 바이너리를 변환하는 PHP에서 관리하고 모든 항목에 대해 작동하지만 난 그냥 파이썬 다른 변환을 발견했습니다. 파이썬을 통해이 예제에서 사용 된 엔트리를 얻으면 public id는 owwweye1rjnvt3i1d0ib18x3입니다. 내가 달성하기 위해 필요한 것은

내가 MySQL의에서 무엇을 얻을 PHP로 변환하는 것입니다 : • WiCÄ'õ0Iò ° | 무엇 파이썬보고하는 -g : owwweye1rjnvt3i1d0ib18x3. PHP 응용 프로그램은 파이썬 (나에 의해 개발되지 않은) 호출을하므로 ID는 성공적인 호출을 위해 동일한 형식이어야합니다.

모든 의견을 환영합니다. 감사.

편집 : 나는 • WiCÄ'õ0Iò ° 를 전송하는 경우 | 파이썬에 PHP에서을 -g 내가 얻을 멀리 rigth를 인쇄 :  ° â € ¢ WiCà € "~Ãμ0Iò â | â €"g

+0

브라우저가 파이썬이 아니기 때문에 EDIT와 혼동스러워합니다. – igs013

답변

1

마지막으로 이것을 정리했습니다.

내가 잘못 생각한 것처럼 파이썬이 16 진수가 아닌 base36으로 변환됩니다.

나는 36-16에서 단순히 base_convert 0bb09557691443c491f53049f27c9667에 시도했다 그러나 나는 owwweye1rk04k4cskkw4s08s 있어요. 실제로 내가 필요로했던 것이 아니라 여전히 더 좋은 단계는 owwweye1rjnvt3i1d0ib18x3처럼 보이기 시작했습니다.

나는 때문에 큰 값으로 표시하는데이 차이는 (정밀도 손실) 변환 할, 그래서 더 연구 한과 PHP의 Gmail 닷컴에서 클리포드 도트 CT에 의해 쓰여진 우는 소리 기능을, 발견 .NET 웹 사이트 : 나는 :)하지만 여전히 희망을 발생하는 경우가 대신 내가했던 것처럼 자신의 머리를 태우는이를 찾을 수 있습니다, 다른 사람들이 자주이 문제에 걸쳐 올 것이다 생각하지 않는다

<?php 

function str_baseconvert($str, $frombase=10, $tobase=36) { 
    $str = trim($str); 
    if (intval($frombase) != 10) { 
     $len = strlen($str); 
     $q = 0; 
     for ($i=0; $i<$len; $i++) { 
      $r = base_convert($str[$i], $frombase, 10); 
      $q = bcadd(bcmul($q, $frombase), $r); 
     } 
    } 
    else $q = $str; 

    if (intval($tobase) != 10) { 
     $s = ''; 
     while (bccomp($q, '0', 0) > 0) { 
      $r = intval(bcmod($q, $tobase)); 
      $s = base_convert($r, 10, $tobase) . $s; 
      $q = bcdiv($q, $tobase, 0); 
     } 
    } 
    else $s = $q; 

    return $s; 
} 

?> 

)))

관련 문제