0

我正在做一个 C# 统一项目。我有一些我想保存在 php 服务器上的对象。

所以首先我将它们序列化为 json,然后压缩它们并将它们上传到服务器,服务器将其保存在数据库中(作为二进制文件,字符串是否足够好?)。

现在我想取回统一的数据。php应该如何返回值?团结应该如何接受它?

我将处理解压缩和反序列化为 json。(对 json 使用 jsonfx 并使用本机用 c# 编写的 compress 方法)这部分工作正常。

我只需要能够在每个平台上接收相同的字节 []。

它应该看起来像这样

C# - 上传数据(伪 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 是二进制数据或字节 [] 时,我该怎么做?

谢谢你的帮助!

更新:

所以这样做的动机是保存压缩返回的字节[]。我最终将其移至base64字符串,然后将其作为字符串传递给php,然后作为字符串传递给数据库。

4

1 回答 1

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']);
于 2013-02-23T11:02:18.297 回答