char 배열에 있는 값을 float 형태로 집어 넣으려면 어떻게 하나요?
글쓴이: rider7979 / 작성시간: 수, 2012/08/08 - 8:40오후
안녕하세요
예를 들어
char baTemp[4]= {1,2,3,4}라는 배열의 값을
float 변수에 1234라는 값으로 넣고자 할 경우
어떤 방법이 좋을까요?
비트연산으로
한바이트씩 밀어넣는 방법으로 아래와 같이 하면 가능할까요?
float Temp = (baTemp[0] << 24) & 0xff000000;
Temp |= (baTemp[1] << 16) & 0x00ff0000;
Temp |= (baTemp[2] << 8) & 0x0000ff00;
Temp |= (baTemp[3]) & 0x000000ff;
Forums:
그건 안좋은 방법인 것
그건 안좋은 방법인 것 같네요
http://forum.falinux.com/zbxe/?document_srl=408135
이런걸 쓰면 되겠지만, 위의 경우는 추가적으로 또 구현을 해줘야겠죠.
이런 식의 구현을 해야 할 것 같은데요
피할 수 있을때 즐겨라! http://melotopia.net/b
사소한 딴지를 걸자면... 일단 int 영역에서
사소한 딴지를 걸자면...
일단 int 영역에서 변환한 이후에
마지막에 floating 으로 casting해서 변환하는 것이
보다 정확하지 않을까요??
double에서 float으로 다운캐스팅은 그냥 잘
double에서 float으로 다운캐스팅은 그냥 잘 되는거 아니었나요? 업캐스팅이었던가요. 크게 신경 안쓰고 살다보니...ㅎㅎ
아무튼 말씀하신게 맞습니다.
피할 수 있을때 즐겨라! http://melotopia.net/b
원글의 1,2,3,4가 16진수라면, 말씀하신
원글의 1,2,3,4가 16진수라면,
말씀하신 방법과 비슷합니다만, | 연산대신 + 연산을 사용하셔야합니다.
float의 binary representation이 int의 그것과 다르기때문입니다.
그래도 snowall님의 방법을 쓰시는것이 보다 bug-free 할것같습니다.
또 baTemp가 -인 경우 문제 자체가 성립하지 않으므로,
아예 unsigned 로 선언하는 것이 안전하겠습니다.
답글 감사합니다... 그런데 atoi atof 같은
답글 감사합니다...
그런데 atoi atof 같은 형변환 함수들을 사용할 수 없는 임베디드 환경이라
어려움이 있네요
그럼... atof같은 함수를
그럼... atof같은 함수를 구현하셔야겠죠.
atoi는 char를 int로 바꾸는 건데, 0~9까지만 사용한다면 단순히 덧셈뺄셈만으로 구현됩니다.
atof는 그보다는 조금 복잡해 보이지만, 역시 0~9까지만 사용한다면 덧셈, 곱셈, 비트연산만으로 구현할 수 있을 것 같네요.
http://blog.naver.com/PostView.nhn?blogId=blueslame&logNo=110006624513
피할 수 있을때 즐겨라! http://melotopia.net/b
baTemp[] 에 '1','2','3','4'
baTemp[] 에 '1','2','3','4' (문자) 가 들어있나요? 1,2,3,4 (숫자) 가 들어있나요?
저는 숫자가 들어있다고 이해했습니다만,
어떤 경우든 atof는 필요없는 상황으로 보이는데요? ( 물론 baTemp 에 0-9 digit만 들어있는 경우. )
문자가 들어있다면 baTemp[i]-'0' 으로 하면 되고,
숫자가 들어있다면 baTemp[i]를 그대로 쓰면되고..
제가 무언가를 놓치고 있는건가요???
너무 오랜만에 C를 봐서 잊고 있었네요. atof
너무 오랜만에 C를 봐서 잊고 있었네요. atof 없이도 그냥 캐스팅만 해줘도 잘 되네요...;;
피할 수 있을때 즐겨라! http://melotopia.net/b
댓글 달기