[완료]char 1바이트 짜리 두 개를 두바이트로 바꾸기?

kkume의 이미지

안녕하세요.

char 배열에

ch[0] = 0x00;
ch[1] = 0x01;

이렇게 들어 있는데요.. 이것을 0x0001로 두 바이트 짜리로 값을 표현 하려면 어떻게 해야 하는 지요?

eungkyu의 이미지

int n = ch[0] << 8 + ch[1];

이런거 말씀하시는건가요?

kkume의 이미지

네.. 바로 원하는 것이었습니다. ^^

새해 복 많이 받으세요..

neogeo의 이미지

endian에 따라 다릅니다. CPU endian 을 꼭 살펴보시고 하셔야합니다.

Neogeo - Future is Now.

Neogeo - Future is Now.

Fe.head의 이미지

#include <arpa/inet.h>
 
...
int i = ntohs( (uint16_t)(ch[0] << 8 + ch[1]) );

이러면 해결될듯.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

Fe.head의 이미지

으음.
제가 틀렸군요.

심오하군요^^

제 생각으로는 첫번째가 답글이 맞지 않을까 싶군요.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

ornus의 이미지

요건 어떨까요?

short i = ntohs(*(short*)ch);

머신 엔디안까지 생각서 이런 코드도 동작할 것 같습니다