小编Ben*_*Ben的帖子

setAlarmClock()在打ze模式下触发得太晚

我很难使无线电闹钟按预期工作,并且在这里我已经阅读了很多有关该主题的主题,但是很遗憾,没有一个主题对我有帮助。

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);        
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent penInt = PendingIntent.getBroadcast(this, intentId, intent, 0);
Run Code Online (Sandbox Code Playgroud)

我在stackoverflow上找到的API级别之间的这种区分方法,将其放入我的calcNextAlarm()函数中(加上一些调试日志消息),无论设备上使用什么API,都可以正确设置警报:

// problems in doze mode api 23+
if (Build.VERSION.SDK_INT >= 23) {
    if (testMode) Log.d("Ben", "setAlarmClock() - API 23+");
    am.setAlarmClock(new AlarmManager.AlarmClockInfo(alarmTimeInMillis, penInt), penInt);
}

else if (Build.VERSION.SDK_INT >= 19) {
// Wakes up the device in Idle Mode
    if (testMode) Log.d("Ben", "setExact() - API >= 19 && API < 23");
    am.setExact(AlarmManager.RTC_WAKEUP, alarmTimeInMillis, penInt);
}
// Old APIs
else …
Run Code Online (Sandbox Code Playgroud)

android sleep alarmmanager setalarmclock doze

4
推荐指数
1
解决办法
1909
查看次数

与 IEEE-754 相比,内存中的浮点位模式按位反转?

我用 C 编写了一个程序来打印浮点数的位模式。

所以我期望收到一个标准 IEEE-754 位模式,即: 1 个符号位 | 8 EXP 位 | 23 个尾数位

当我得到输出并将结果输入 IEEE-754 转换器时,数字是错误的。当我一点点颠倒顺序时,数字是正确的。

所以我问的原因是:我发现了一个线程,其中我了解到该模式可以按字节反转,但我没有发现它完全按位反转。

有人可以澄清一下吗?

这是程序、输出和转换结果的屏幕截图。(如您所见,我以相反的顺序将数字放入转换器中,结果对我来说看起来不错。)

截屏

c memory floating-point pointers ieee-754

1
推荐指数
1
解决办法
318
查看次数

C素因子分解(循环失败?)

我一直在研究这段简单的代码1.5小时,但没有发现错误.我开始疯了;)

你们这些有着清新头脑和观点的人能给我一点暗示,我可能会犯错吗?(我对C比较新)

问题是:代码适用于我输入和测试的大多数数字,但我偶然发现了一个不起作用的数字:3486118(或55777888,它是它的倍数)它适用于第一个循环但是在因子2之后它变成了无限循环.

这是我的代码:(非常感谢任何帮助)

// Program calculates prime factors of entered number and returns them

#include <stdio.h>

int main() {

    long int num, num_cp;
    long int product=1;

    /*prime number array up to 100.000*/
    long int prime[] = {2, 3, **[...cut out MANY numbers...]** 99971, 99989, 99991};

    printf("Please enter a positive integer:\n");
    scanf("%li", &num);//55777888 or 3486118 not working... why?
    //copy the entered number to keep the original for comparison with "product" and "break;" if equal
    num_cp=num;

    printf("prime factorization of %li:\n\n", num); …
Run Code Online (Sandbox Code Playgroud)

c for-loop

0
推荐指数
1
解决办法
95
查看次数