php msgpack_包以及如何在Unity3d C中转换

php msgpack_包以及如何在Unity3d C中转换,php,json,unity3d,msgpack,Php,Json,Unity3d,Msgpack,我想知道为什么使用msgpack不会在php中加密 我认为{id:1,v1:bla,v2:foo}将转换为十六进制字符串83 a2 69 64 01 a2 76 31 a3 62 6c 61 a2 76 32 a3 66 6f 6f 但结果是魷id:1,v1:bla,v2:foo} 为什么? 下面是我的代码: include_once "msgpack.php"; $phpVariable = array( "id"=>1, "v1"=>'bla',"v2"=> 'foo');

我想知道为什么使用msgpack不会在php中加密

我认为{id:1,v1:bla,v2:foo}将转换为十六进制字符串83 a2 69 64 01 a2 76 31 a3 62 6c 61 a2 76 32 a3 66 6f 6f

但结果是魷id:1,v1:bla,v2:foo} 为什么?

下面是我的代码:

include_once "msgpack.php";
$phpVariable = array( "id"=>1, "v1"=>'bla',"v2"=> 'foo');
$json = json_encode($phpVariable,true);
echo $json."<br>";//{"id":1,"v1":"bla","v2":"foo"}
$binaryString = msgpack_pack($json);
echo $binaryString."<br>";//魷"id":1,"v1":"bla","v2":"foo"}
$base64 = base64_encode($binaryString);
echo $base64."<br>";//vnsiaWQiOjEsInYxIjoiYmxhIiwidjIiOiJmb28ifQ==

------------output-----------------------
{"id":1,"v1":"bla","v2":"foo"}
魷"id":1,"v1":"bla","v2":"foo"}
vnsiaWQiOjEsInYxIjoiYmxhIiwidjIiOiJmb28ifQ==
如果我只使用php msgpack,不要使用json_encode, 但我不知道如何在Unity3d C中转换解码字节

//php code
$data = (object) array('name' => 'peter', 'age' => '30');//this could be a multi array
$msgpack_response = msgpack_pack($data);
$msgpack_response = base64_encode($msgpack_response);
echo $msgpack_response;

 //Unity3d C# use msgpack 
 byte[] decodedBytes = Convert.FromBase64String (text);
 ObjectPacker packer = new ObjectPacker ();
 ??? data = packer.Unpack<???>(decodedBytes);//I don't know the type and how to convert?

msg_pack是一个二进制序列化程序。所以,msgpack_pack的结果必须是一个二进制字符串,仅仅回显它来想知道它的另一面是什么是无用的

无论如何$json变量是一个字符串。根据此msgpack,将向字符串fixstr 101xxxxx 0xa0-0xbf添加前缀

字符串长度为30,因此1010 00002+0000 11102=1011 11102=BE16。所以结果的第一个字节是


然后,您尝试将二进制字符串作为多字节字符串回显。它将前两个字节捕获为一个符号。

为什么希望msgpack进行加密?它不是加密库。您想实现什么?我想使用msgpack缩短响应消息字节,响应消息不能使用base64_解码转换为清除代码,例如:魷id:1,v1:bla,v2:foo}