클라이언트 SDK 개발을 위해 MessagePack을 사용하고 있습니다. 내 서버가 java에있는 동안 Java, ObjC 및 Python으로 클라이언트를 개발해야합니다. java 및 ObjC msgpack 라이브러리에는 문제가 없지만 Python에서는 31 자 이상의 문자열 값으로 사전을 압축 할 때 압축 된 데이터가 다른 언어로 압축되지 않습니다. 파이썬에서 동일하게 압축을 풀려고해도 문자열 길이가 32 미만이면 상호 운용성이 매우 좋습니다. I는 ObjC에서 동일한 키 값을 가진 사전 은밀한 경우 나MsgPack 파이썬에서 32 자보다 긴 문자열 값 패킹
<81a76170 695f6b65 79da0020 61643039 37333961 63313638 66663261 31393966 62323465 62346532 34646238>
얻을 동안 실패 아래 하나 파이썬 예 .. 이것을 생성
myPacket = {u"api_key":u"ad09739ac168ff2a199fb24eb4e24db8"}
msgPackedPacket = umsgpack.packb(myPacket)
이진 데이터
<81a76170 695f6b65 79d92061 64303937 33396163 31363866 66326131 39396662 32346562 34653234 646238>
인
ObjC 결과가 잘 풀리고 파이썬이 ..되지 않으며 ObjC의 데이터에서 2 바이트를 더 기록 할 수 있습니다.
제대로 작동 자 여기 = 30의
myPacket = {u"api_key":u"ad09739ac168ff2a199fb24eb4e24d"}
수 아래의 예를 .. 내가 파이썬
<81a76170 695f6b65 79be6164 30393733 39616331 36386666 32613139 39666232 34656234 65323464>
과 ObjC에 대해 다음 바이트를 얻을, 나는 이하의 바이트를 얻을.
<81a76170 695f6b65 79be6164 30393733 39616331 36386666 32613139 39666232 34656234 65323464>
나는 분명히 뭔가를 놓친다면 미안해. 어떤 대안이나 제안을 찾고있어. 나는 하루 이상을 쳤다.
미리 감사드립니다.
16 진수 문자열로 인코딩 된 어떤 문자를 볼 때 두 번째는'\x81\xa7api_key\xda\x00 ad09739ac168ff2a199fb24eb4e24db8' # ObjC's version
세 번째, 30 바이트로 디코딩 동안
myPacket으로 간주됩니다. 죄송합니다! – Ravi
* 언팩하고있는 플랫폼은 무엇입니까? –
@Tim ObjC에서 풀고 있습니다. ObjC의 msgpack 라이브러리는 아무 것도 반환하지 않고 오류를 출력하지 않습니다. 나는 또한 잘못된 바이트 : -03 – Ravi