gpt4 book ai didi

php - 同一调用在 Android 和 iOS 上返回不同的 JSON 结果

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:20 26 4
gpt4 key购买 nike

背景:

我正在使用通用的 HTTPebble 库为 Pebble Smartwatch 编写一些东西,作为 watch 和手机之间的桥梁。这需要一个特定的 iOS 应用程序和一个不同的 Android 应用程序,尽管它们使用相同的框架和库。

问题:

我能够对 PHP 服务器执行 HTTP 调用,并成功返回并解码来自 Android Gingerbread 的 JSON 连音结果。但是,在 iOS 设备上使用相同的调用时,我无法收到有效的预期结果。

这是我用来接收 JSON 结果的代码:

#define INTRO_DAY1_ICON 1
Tuple* icon = dict_find(received,INTRO_DAY1_ICON);
if (icon){
dayTransition.day[0].currentWeather = icon->value->int8;

我希望 icon->value->int8 是一个整数值 0、1、2、3、11 或 99。在 Android 上,这目前正在按预期工作。但是,在 iOS 上,我似乎总是返回 8 的结果。更进一步,图标通过 Android 返回值 > 50,000(有数据),而在 iOS 上返回值 0。

更令人费解的是,所提供的示例代码能够在两个设备上返回有效结果,但使用我的代码镜像该功能不会产生相同的结果。 (这意味着从任何一个设备调用时 data_tuple 都会被填充)该代码如下:

    Tuple* data_tuple = dict_find(received, WEATHER_KEY_CURRENT);
if(data_tuple) {
uint16_t value = data_tuple->value->int16;
uint8_t icon = value >> 11;
if(icon < 10) {

关于为什么会发生这种情况有什么想法吗?

最佳答案

我终于明白了!我认为问题在于数据在 iOS 和 Android 上的解释方式。在 Android 上,我可以传回任何类型的整数(有符号或无符号,8 位、16 位或 32 位),它似乎可以正常工作。但是,在 iOS 上,我需要对 JSON 输出(在编码之前)进行按位移位处理,以使其成为无符号的 16 位整数。然后,一旦它返回到 Pebble,就会有代码将该无符号 16 位整数转换为无符号 8 位整数,然后再将其分配给标准 c int

uint16_t value1 = icon_tuple1->value->int16;
uint8_t icon1 = value1 >> 11;
dayTransition.day[0].currentWeather = icon1;

长话短说移动您的 JSON >> 11,返回到设备,然后在设备的接收阶段取消移动 << 11。

关于php - 同一调用在 Android 和 iOS 上返回不同的 JSON 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17448681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com