首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用hessian从android向php发送双精度数据时出现解析错误

使用hessian从android向php发送双精度数据时出现解析错误
EN

Stack Overflow用户
提问于 2012-01-24 20:42:19
回答 1查看 241关注 0票数 1

我想使用hessian从我的android客户端向PHP服务器发送一个双精度值,但是客户端上的writeDouble函数或服务器上的parseDouble函数都有错误。(我们正确地传输了许多不同的数据类型,只有这两种数据类型会给我们带来麻烦:)

双精度值为经度和纬度,例如:

android客户端发送: 14,30485725402832

服务器接收: 1.0474191691834E-321

android编码:

代码语言:javascript
复制
public void writeDouble(double value) throws IOException
{
   long bits = Double.doubleToLongBits(value);

   os.write('D');
   os.write((byte) (bits >> 56));
   os.write((byte) (bits >> 48));
   os.write((byte) (bits >> 40));
   os.write((byte) (bits >> 32));
   os.write((byte) (bits >> 24));
   os.write((byte) (bits >> 16));
   os.write((byte) (bits >> 8));
   os.write((byte) (bits));
}

php解码:

代码语言:javascript
复制
function parseDouble($code, $num){
            $bytes = $this->read(8);
            if(HessianUtils::$littleEndian)
                    $bytes = strrev($bytes);
            $double = unpack("dflt", $bytes);
    return $double['flt'];
    }

顺便说一句:我们也有一个iPhone客户端发送的双重工作很好…

iphone编码:

代码语言:javascript
复制
(void)encodeDouble:(double)realv forKey:(NSString*)key;
{
   if (key) [self writeTypedObject:key];
   [self writeChar:'D'];
   [self writeInt64:(int64_t)(*((double*)(&realv)))];
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-24 20:58:18

鉴于iOS是小端的,我认为您希望在double代码中以相反的顺序编码您的Java。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8986985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档