質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

5回答

11318閲覧

String型の数値をそのままint型に変更したい

bobby2128

総合スコア42

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2017/03/07 05:11

###前提・実現したいこと
String型の数値をそのままint型に変更したいです。
例えば20170307というString型の文字を、
(String str="20170307";)

そのままint型の20170307へ変更したいです。
(int num = 20170307)

お手数おかけいたしますが、どうかよろしくお願いいたします。

###試したこと
toCharArray( , );
の使用を試みましたがうまくいきませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
Arduino IDE 1.8.0
Arduino NANO

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

toCharArray() だと String型(テキスト)から char[]型(テキスト)に変換してると思うので予定通りにうまく行かないと思います。。。
toInt() で int になると思いますがありませんでしたか?

投稿2017/03/07 05:22

CerealRusk

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/03/07 06:08

CerealRusk様 コメントいただきありがとうございます。 修正し確認したところ、 2017372というString型が、-14244と変換されるようになりました。 この2017372という数字をそのまま変換したいのですが、 なにか良い手段などございますでしょうか。
bobby2128

2017/03/07 06:29

Chironian様 コメントいただきありがとうございます。 toINT()で変換したところ、上記のように値が変更されていしまいました。
bobby2128

2017/03/07 06:35

can110様 コメントいただきありがとうございます。 その場合、long型に変換する関数が必要かと思われますが、ご存知でしたらお教えいただけますと幸いです。 long num; long num=ZYOU.toInt(); ですとエラーが出てきました。
CerealRusk

2017/03/07 06:39

Arduino NANO は 16bitのシステムで 65535より大きい数値を int でやることは確かにできないみたいですね。。。 Arduino NANO に実装されているか確認していませんが strtol で long 型にする事は出来ます。実装されてるか怪しいですが・・・
bobby2128

2017/03/07 06:46

CerealRusk様 コメントいただきありがとうございます。 大変申し訳ございませんが、例文を記載していただきますと幸甚に存じます。
CerealRusk

2017/03/07 06:51

手元にコンパイル環境が無いので。。。こんな感じですが使えるかはわかりません。 #include <stdlib.h> // ←strtol long val = strtol( ZYOU.toCharArray(), NULL, 10 );
bobby2128

2017/03/07 07:06

Can110様、CerealRusk様、Chironian様 ここまで親切にご回答いただきまして誠にありがとうございました。 dekky0910様のご回答により、先ほど無事に解決することができました。 ここまで誠にありがとうございました。
guest

0

toIntの戻り値がlong型なのにintで受け取るためマイナス値になっているのだと思いますが。

c

1String str="20170307"; 2long num = str.toInt();

投稿2017/03/07 06:58

turbgraphics200

総合スコア4267

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/03/07 07:04

turbgraphics200様 ご回答いただきありがとうございました。 dekky0910様にもturbgraphics200様と同様にご回答いただきまして、 無事に動作することができました。誠にありがとうございました。
guest

0

ベストアンサー

arduinoには int.Palse()は使えなかったでしょうか?
基本構文だとint(str)だと思うのですが・・・

投稿2017/03/07 06:14

編集2017/03/07 06:19
dekky0910

総合スコア93

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/03/07 06:28

dekky0910様 コメントいただきありがとうございます。 int.Palse()という関数は初見なので、 よろしければ例文を示していただきますと幸いです。 String str="20170307"; ↓ int num = 20170307;
dekky0910

2017/03/07 06:32

実行できるのかは試していないのでちょっと怪しいのですが String str ="20170307"; int num =0; num=int.Palse(str); または num=int(str); でどうでしょうか
bobby2128

2017/03/07 06:39

【num=int.Palse(str);の場合】 error: expected primary-expression before 'int' num=int.Palse(str); 【num=int(str);の場合】 error: invalid cast from type 'String' to type 'int' num=int(str); 上記のようなエラーとなりました。 どうかよろしくお願いいたします。
dekky0910

2017/03/07 06:54

なるほど・・ では string str ="20170307"; long num = str.toInt(); ではいかがでしょうか
bobby2128

2017/03/07 07:02

dekky0910様 ありがとうございます!完璧に動作いたしました! ありがとうございました!
dekky0910

2017/03/07 07:06

動作してよかったです! long型の変数なのにtoInt()でいいのかって思っちゃいますよね、 alduinoのリファレンスにいろいろあるので時間があったら確認してみてください。 https://www.arduino.cc/en/Reference/StringToInt
bobby2128

2017/03/07 07:08 編集

ありがとうございます!参考にします! ここまでありがとうございました。
guest

0

(int) strでは上手くいかないでしょうか?
参考リンク

投稿2017/03/07 05:26

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/03/07 06:09

motuo様 コメントいただきありがとうございます。 エラーが出たのですが、その理由として、variableではないことが考えられます。 【構文】 (type)variable type: すべての型 variable: 変数や定数
guest

0

一般的にはatoi()とかatol()ですが、標準関数が使えないときは自分で組むしかないような気がします。

投稿2017/03/07 05:15

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2017/03/07 06:15

hobi様 コメントいただきありがとうございます。 atoi(str, num, 10); のように実行した結果、以下のようなエラーとなってしまいました。 C:\Users\y.y\Documents\Arduino\_2017.3.7soushin_Char\_2017.3.7soushin_Char.ino: In function 'void show_time_and_date(DateTime)': _2017.3.7soushin_Char:158: error: cannot convert 'String' to 'const char*' for argument '1' to 'int atoi(const char*)'
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問