# \[SOLVED\] How can I convert String to long long?

**URL:** <https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176>\
**Category:** Programming\
**Created:** [October 18, 2021, 9:36pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176 "2021-10-18T21:36:57Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 18, 2021, 9:36pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/1 "2021-10-18T21:36:57Z")

</div>

Hello, I am working on an RFID project which involves reading big numbers and I am stuck on converting String variable "s\_c\_card\_number" to long long variable. Please help me, any help would be appreciated. Code is in the link.

> **[Arduino Cloud](https://create.arduino.cc/editor/leon_usmiani/6cdd100c-fcfb-4d36-9f0c-cdc0a46bd7f2/preview)**
>
> The Arduino Web Editor allows you to write code and upload sketches to any official Arduino board from your web browser (Chrome, Firefox, Safari and Edge) after installing an agent.

---

<div class="post-metadata">

**Author:** ![er\_name\_not\_found](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/er_name_not_found/32/647693_2.png) [@er\_name\_not\_found](https://forum.arduino.cc/u/er_name_not_found)\
**Post date:** [October 18, 2021, 9:51pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/2 "2021-10-18T21:51:11Z")

</div>

One method is to parse a long.  
atol() is a C++ function that parses a long from a string.

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 18, 2021, 9:53pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/3 "2021-10-18T21:53:18Z")

</div>

I tried that, but there was some error. Anyways, thanks for a fast answer. When I mean big numbers, I mean, like 13 digit long numbers.

Edit: that's why long is not enough, I need long long.

---

<div class="post-metadata">

**Author:** ![er\_name\_not\_found](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/er_name_not_found/32/647693_2.png) [@er\_name\_not\_found](https://forum.arduino.cc/u/er_name_not_found)\
**Post date:** [October 18, 2021, 9:54pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/4 "2021-10-18T21:54:51Z")

</div>

Try to split the string in two and do it in pieces.  
It's not a number until you make it a number.

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 18, 2021, 9:55pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/5 "2021-10-18T21:55:23Z")

</div>

But how will I connect it in long long later?

---

<div class="post-metadata">

**Author:** ![er\_name\_not\_found](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/er_name_not_found/32/647693_2.png) [@er\_name\_not\_found](https://forum.arduino.cc/u/er_name_not_found)\
**Post date:** [October 18, 2021, 9:56pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/6 "2021-10-18T21:56:32Z")

</div>

First, what Arduino are you using, please?

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 18, 2021, 9:57pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/7 "2021-10-18T21:57:09Z")

</div>

Currently, Uno, maybe I will move the project to Mega 2560 later.

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 18, 2021, 9:58pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/8 "2021-10-18T21:58:35Z")

</div>

Btw, I am in a time zone where it's nearly midnight, so I will come back tomorrow, anyways, thank you.

---

<div class="post-metadata">

**Author:** ![er\_name\_not\_found](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/er_name_not_found/32/647693_2.png) [@er\_name\_not\_found](https://forum.arduino.cc/u/er_name_not_found)\
**Post date:** [October 18, 2021, 9:59pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/9 "2021-10-18T21:59:23Z")

</div>

No, worries. Good night.  
I will reply more in a bit, feel free to come back to it at your convivence tomorrow.

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 18, 2021, 9:59pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/10 "2021-10-18T21:59:41Z")

</div>

Ok, thanks.

---

<div class="post-metadata">

**Author:** ![cattledog](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/cattledog/32/217816_2.png) [@cattledog](https://forum.arduino.cc/u/cattledog)\
**Post date:** [October 18, 2021, 10:09pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/11 "2021-10-18T22:09:25Z")

</div>

> [@leon\_usmiani](#):
>
> long is not enough, I need long long.

strtoll (string to long long) or  
strtoull (string to unsigned long long)

If you have a String object, you will need to convert to a null terminated c string.

[https://www.cplusplus.com/reference/cstdlib/strtoll/](https://www.cplusplus.com/reference/cstdlib/strtoll/)

[https://www.cplusplus.com/reference/cstdlib/strtoull/](https://www.cplusplus.com/reference/cstdlib/strtoull/)

---

<div class="post-metadata">

**Author:** ![killzone\_kid](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/killzone_kid/32/1098074_2.png) [@killzone\_kid](https://forum.arduino.cc/u/killzone_kid)\
**Post date:** [October 18, 2021, 10:29pm UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/12 "2021-10-18T22:29:48Z")

</div>

> [@leon\_usmiani](#):
>
> Edit: that's why long is not enough, I need long long.

So you tried stoll, right? [https://www.cplusplus.com/reference/string/stoll/](https://www.cplusplus.com/reference/string/stoll/)

---

<div class="post-metadata">

**Author:** ![ruilviana](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ruilviana/32/722429_2.png) [@ruilviana](https://forum.arduino.cc/u/ruilviana)\
**Post date:** [October 19, 2021, 1:04am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/13 "2021-10-19T01:04:45Z")

</div>

Hi @leon_usmiani,

try this way:

As the number is very large, to print it it was necessary to separate it and use sprintf().  
RV mineirin

RV mineirin

```cpp
unsigned long long x ;
unsigned long long y;
unsigned long long z;
//----------------------------------------------------
void setup()
{
  Serial.begin(115200);
  
  String number = "1234567890123";
  
  y = (number .substring(0, 8)).toInt();
  z = (number .substring(8)).toInt();
  x = (y * 100000) + z;

  char buffer[100];
  sprintf(buffer, "%0ld", x / 1000000L);
  Serial.print(buffer);
  sprintf(buffer, "%0ld", x % 1000000L);
  Serial.println(buffer);
}
//----------------------------------------------------
void loop() {}

```

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 19, 2021, 6:45am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/14 "2021-10-19T06:45:35Z")

</div>

@ruilviana Thank you for the most complete answer. There is one thing that confuses me, does the number of the zeros in \<x = (y \* 100000) + z;\> matter or not?

EDIT: I am asking this because sometimes the number will have less than 13 digits and sometimes more. Anyways the code works like a charm for me. I don't actually need to print long long, I can use String, but I needed long long for storing card numbers in the "database" on SD card. I still have many work to do on this project.

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 19, 2021, 6:56am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/15 "2021-10-19T06:56:58Z")

</div>

It turns out that number of "zeros" really matters. I will try making some solution using sizeof() and then I will post it. It is funny how I actually asked myself a question and got an answer. 🙂

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [October 19, 2021, 6:59am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/16 "2021-10-19T06:59:20Z")

</div>

A uno can’t print a long long directly. If you need to display the value, using the string you parsed is a possibility

strtoll would avoid all the mess

Sizeof won’t do you any good…. It is always the size of the storage (8 byte for a long long) regardless of the content

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 19, 2021, 7:01am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/17 "2021-10-19T07:01:13Z")

</div>

@J-M-L I just said that I don't need to print long long, and I can use String, but I need long long (integer type variable) for storing numbers, so no problems. 🙂

EDIT: I need sizeof second substring to determine how many zeros I need.

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [October 19, 2021, 7:02am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/18 "2021-10-19T07:02:05Z")

</div>

Why don’t you use strtoll? (As suggested above a few times by other members)

```cpp
String number = "1234567890123";
long long value = strtoll(number.c_str(), nullptr, 10);

```

PS:  
If you have a String object use the [length() method](https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/length/) to know it’s size

---

<div class="post-metadata">

**Author:** ![leon\_usmiani](https://avatars.discourse-cdn.com/v4/letter/l/f08c70/32.png) [@leon\_usmiani](https://forum.arduino.cc/u/leon_usmiani)\
**Post date:** [October 19, 2021, 7:07am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/19 "2021-10-19T07:07:08Z")

</div>

![Screenshot 2021-10-19 at 09.06.15](https://europe1.discourse-cdn.com/arduino/original/4X/b/5/d/b5d8bfebd0c90d63d54dba84eb8eb17a6f243c7f.png)  
Thanks for reminding me of length(). 🙂

---

<div class="post-metadata">

**Author:** ![J-M-L](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/j-m-l/32/766245_2.png) [@J-M-L](https://forum.arduino.cc/u/J-M-L)\
**Post date:** [October 19, 2021, 7:08am UTC](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176/20 "2021-10-19T07:08:04Z")

</div>

That’s a good reason for not using it. 🙂

[Next page](https://forum.arduino.cc/t/solved-how-can-i-convert-string-to-long-long/916176.md?page=2)
