Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. C++ Longint in String umwandeln

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    C++ Longint in String umwandeln

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      WolfgangFB last edited by

      In Esphome habe ich eine Zeitkomponente die ich als ms seit 1970 in einen String schreiben möchte.
      Das ganze funktioniert mit

      lambda 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?)

      paul53 MartinP 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @WolfgangFB last edited by paul53

        @wolfgangfb

        Google sagt:

        printf("%ll", n);   // long long
        
        W 1 Reply Last reply Reply Quote 0
        • MartinP
          MartinP @WolfgangFB last edited by MartinP

          @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 ....

          W 1 Reply Last reply Reply Quote 0
          • W
            WolfgangFB @paul53 last edited by

            @paul53 sagte in C++ Longint in String umwandeln:

            @wolfgangfb

            Google sagt:

            printf("%llu", n);   // unsigned long long
            

            Danke, das habe ich gesucht.

            1 Reply Last reply Reply Quote 0
            • W
              WolfgangFB @MartinP last edited by

              @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.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              807
              Online

              31.7k
              Users

              79.8k
              Topics

              1.3m
              Posts

              3
              5
              211
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo