NEWS
C++ Longint in String umwandeln
-
In Esphome habe ich eine Zeitkomponente die ich als ms seit 1970 in einen String schreiben möchte.
Das ganze funktioniert mitlambda return str_sprintf("%d", abs(id(MySntp).now().timestamp));
ich bekomme aber eine Warnug dass ich "int" mit "long" verwurstle.
/opt/iobroker/iobroker-data/esphome.0/mini-engel.yaml: In lambda function: /opt/iobroker/iobroker-data/esphome.0/mini-engel.yaml:378:26: warning: format '%d' expects argument of type 'int', but argument 2 has type 'long long int' [-Wformat=] 378 | payload: !lambda return str_sprintf("%d", abs(id(MySntp).now().timestamp)); | ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | long long int
Wie macht man dieses Typcast sauber so dass die Warnmeldung wegfällt?
(Oder wie macht man so eine Umwandlung eleganter?) -
-
@wolfgangfb said in C++ Longint in String umwandeln:
lambda return str_sprintf("%d", abs(id(MySntp).now().timestamp));
- Was soll das "abs(..)"?
- Mit welcher Klassen ist das Objekt "id()" kreiert worden?
Je nach print - Bibliothek unterscheiden sich die Format-Qualifier.
"%llu" wäre mein Ratschlag ....
-
@paul53 sagte in C++ Longint in String umwandeln:
Google sagt:
printf("%llu", n); // unsigned long long
Danke, das habe ich gesucht.
-
@martinp sagte in C++ Longint in String umwandeln:
@wolfgangfb said in C++ Longint in String umwandeln:
lambda return str_sprintf("%d", abs(id(MySntp).now().timestamp));
- Was soll das "abs(..)"?
Ist unnötig, war mein erster Versuch das umzuwandeln.