我正在开发一个C#unity项目。 我有一些对象,我想保存在PHP服务器上。
所以首先我将它们序列化为json,然后压缩它们并将它们上传到服务器, 将其保存在db上(作为二进制文件,字符串是否足够好?)。
现在我想要获取统一数据。 php应该如何返回值?团结应该如何接受呢?
我将处理解压缩,并反序列化为json。 (对json使用jsonfx并使用c#本机编写的compress方法) 这部分工作正常。
我只需要能够在每个平台上接收相同的字节[]。
它应该看起来像这样
C# - 上传数据(psuedo C#)//这部分效果很好
wwwform myform= new wwwform ()
byte[] mybytearr = ...
wwwform.addbinary ($mybytearr);
WWW myw= new www (url,myform)
C# - 获取数据(需要帮助)
WWW www = > new www (url,formdata)
myinput =www.text;
PHP - 将数据发送回客户端(这里需要帮助) ...
$myvarbackfromthedb =.
echo $myoutput
当$ myoutput是二进制数据或byte []?
时,我该如何做同样的事情感谢您的帮助!
更新
所以这样做的动机是保存压缩返回的byte []。我最终,将其移动到base64字符串,然后将其作为字符串传递给php,然后作为字符串传递给数据库。
答案 0 :(得分:1)
让我们从一些二进制数据开始:
$binary = file_get_contents('/tmp/foo');
或者可能用于测试目的:
$binary = join(array_map('chr', range(0, 127)));
两者都是一些任意的二进制字符串。您可以使用以下命令从它们输出有效的JSON字符串:
echo json_encode(array('foo' => $binary));
这会给你这样的东西:
{"foo":"\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"}
这是该二进制数据的有效JSON表示。任何解码该数据的人都将获得二进制值。您可能希望对其进行更高效的编码,例如使用Base 64编码:
echo json_encode(array('foo' => base64_encode($binary)));
这会给你:
{"foo":"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8="}
现在接收器必须再次解码它。在PHP中看起来像这样:
$data = json_decode($json, true);
$data['foo'] = base64_decode($data['foo']);