막막하고 다급한 마음에 질문 드립니다.
41F31990000100010000000000000003
위와같은 16자리 string으로된 문자열을 변환하여
30.39라는 수치를 얻어야하는데요.
바이너리 같은데 어떤식으로 코딩해야 할지 막막하네요.
실제로는 앞의 41F31990만 변환해도 30.39가 나오는것 같은데
모르겠습니다.
조언 부탁드립니다.
union { unsigned char c[4]; float x; } aa;
인텔 CPU는 리클 엔디안이므로
c[0] = 0x90; c[1] = 0x19; c[2] = 0xF3; c[3] = 0x41;
printf("%f", aa.x);
이렇게 하면 될 겁니다.
알려주신 방법으로 변환에 성공하였습니다.
한가지 더 질문이 있는데요.
위의 예에서 만약 char a[2]로 정의되어 a[0]=4, a[1]=1 처럼 문자열로 정의 되어 있다면
c[0] = 0x41 로 변환하려면 어떻게 해야 할가요
a[0] = 4; a[1] = 1; c[0] = a[0] << 4 | a[1];
Ascii라면
a[0] = '4'; a[1] = '1'; a[0] -= '0'; a[1] -= '0'; c[0] = a[0] << 4 | a[1];
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동 "만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
union 을 쓰세요.
union {
unsigned char c[4];
float x;
} aa;
인텔 CPU는 리클 엔디안이므로
c[0] = 0x90;
c[1] = 0x19;
c[2] = 0xF3;
c[3] = 0x41;
printf("%f", aa.x);
이렇게 하면 될 겁니다.
감사합니다.
알려주신 방법으로 변환에 성공하였습니다.
한가지 더 질문이 있는데요.
위의 예에서 만약 char a[2]로 정의되어 a[0]=4, a[1]=1 처럼 문자열로 정의 되어 있다면
c[0] = 0x41 로 변환하려면 어떻게 해야 할가요
a[0] = 4; a[1] = 1; c[0] =
이렇게 하면 될듯 한데요.
Ascii라면
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
-----------------------
내가 쓰는 글은 틀릴 수 있습니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
댓글 달기