2013. 5. 17. 17:00

아두이노는 형 변환이 좀 까다로운 것 같습니다 ㅡ,.ㅡ;;

보통 문자열을 정수로 변환하는 메소드나 클래스를 제공하기 마련인데 그런 거 없음;;;

형 변환 관련된 레퍼런스를 다 확인한 건 아니지만 변수 간 형 변환을 바로 할 수 있는 라이브러리는 몇 개 없는 것 같습니다.

 

 

1. 아두이노에서 String의 특징

어느 언어든 String은 'char[]'로 구현된다는 점입니다.

'char[]'를 직접 다루는것이 불편하니 'String'클래스를 만들어서 제공해주는 것이죠.

 

아두이노도 마찬가지 입니다.

(참고 : Arduino Reference - StringObject )

 

아두이노에서 char는 아스키코드가 들어 있어서 '+'연산을 하면 char이 합쳐지지 않고 덧샘이 됩니다 ㅎㅎㅎ

 

 

2. String to char[]

위에서 말했다 싶이 String[]는 char라 그냥 사용하면 덧샘이 됩니다 ㅎㅎ

그러니 String에서 문자열을 추출하기 위해서는 substring을 사용하여 String로 출력하던가 toCharArray로 char[]로 받아야 사용할수 있습니다.

 

만약 String에서 특정위치의 값을 추출하고 싶다면 바꾸고 싶다면 먼저 substring을 해야 하면 됩니다.

String sCommand = "100140255";
char cTempData[4];
sCommand.substring(0, 3).toCharArray(cTempData, 4);

//cTempData : 100

 

이렇게 하면 원하는 위치의 문자열을 char[]로 만들 수 있죠.

 

 

3. char[] to int

왜 char[]로 변환하느냐?

문자열을 int로 변환할 때 쓰는 메소드인 'atoi()'가 char[]만 받을 수 있기 때문입니다.

String sCommand = "100140255";
char cTempData[4];
sCommand.substring(0, 3).toCharArray(cTempData, 4);

int nR = atoi(cTempData);
//nR : 100

 

 

 

4. 'String.toInt()' 함수

몇 버전부터인지는 모르겠지만 드디어 아두이노에도 문자열을 숫자로 바꿔주는 함수가 생겼습니다.

참고 : arduino doc - String to Int FunctiontoInt()

 

String sCommand = "100140255";
int nR = sCommand.toInt();
//nR : 100140255

 

 

 

마무리

뭔가 아두이노의 String은 없으면 섭할거 같아서 넣은 느낌이 강하네요 ㅡ,.ㅡ;;

입력받는 값이나 출력하는 값이 일정 할테니 그런 건지 ㅎㅎㅎ

 

결국 문자열을 숫자로 바꾸고 싶다면 처음부터 char[]로 작업하는 것이 좋습니다.