4바이트에서 8바이트로 캐스팅을 하려고 하는데 이때 4바이트의 MSB가 확장되지 않게 하려면 어떻게 해야 하나요. 즉 ffff ffff를 0x0000 0000 ffff ffff 식으로요.
질문이 부적절합니다. 캐스팅은 어떤 형에서 다른 형으로 변환하는 것이지 바이트 수로 따지는 것이 아닙니다. 그리고 내부의 비트열 표현에 관한 문제까지 들어 있어서 함부로 답변하기 어렵습니다. 질문의 의도를 볼 때 4바이트라는 형을 unsigned로 캐스팅하는 것을 원하시는 것이 아닌가 짐작은 합니다만.
아 예 unsigned int에서 unsigned long으로 캐스팅 하는데 이게 인텔에서는 아무 문제가 없는데 ARM에서 문제가 생기네요.
예를 들어 0xf38a2bd6은 인텔에서는 0x00000000f38a2bd6으로 원하는데로 캐스팅 되나 ARM에서는 0xf38a2bd600000000 으로 되버리네요.
ARM에서 unsigned long 이 64bit 인가요? 32bit 인걸로 알고 있는데... 32bit 머신에서는 unsigned long이 32bit 인걸로 알고있는데...
byte order 때문입니다.
어쩔수 없이 변경을 해주셔야 합니다.
htonl 같은것으로 하셔도 되고 직접 shift로 하셔서 됩니다.
구글에서 검색하면 좋은 알고리즘과 소스코드도 많으니 참조하시기 바랍니다.
그럼
casting 질문
여러 가지 방법이 있지만 가장 간단하게 or 연산을 한 번 해보면 됩니다. f f f f f f f f --> 4 bytes | 0000 0000 0000 0000 --> 8 bytes -------------------- 0000 0000 f f f f f f f f
텍스트 포맷에 대한 자세한 정보
<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]
질문이 부적절합니다. 캐스팅은 어떤 형에서 다른 형으로 변환하는 것이지
질문이 부적절합니다. 캐스팅은 어떤 형에서 다른 형으로 변환하는 것이지
바이트 수로 따지는 것이 아닙니다. 그리고 내부의 비트열 표현에 관한 문제까지
들어 있어서 함부로 답변하기 어렵습니다.
질문의 의도를 볼 때 4바이트라는 형을 unsigned로 캐스팅하는 것을
원하시는 것이 아닌가 짐작은 합니다만.
아 예 unsigned int에서 unsigned long으로 캐스팅 하
아 예 unsigned int에서 unsigned long으로 캐스팅 하는데
이게 인텔에서는 아무 문제가 없는데 ARM에서 문제가 생기네요.
예를 들어 0xf38a2bd6은
인텔에서는 0x00000000f38a2bd6으로 원하는데로 캐스팅 되나
ARM에서는 0xf38a2bd600000000 으로 되버리네요.
ARM에서 unsigned long 이 64bit 인가요? 32bit 인
ARM에서 unsigned long 이 64bit 인가요? 32bit 인걸로 알고 있는데...
32bit 머신에서는 unsigned long이 32bit 인걸로 알고있는데...
^^
byte order 때문입니다.
어쩔수 없이 변경을 해주셔야 합니다.
htonl 같은것으로 하셔도 되고 직접 shift로 하셔서 됩니다.
구글에서 검색하면 좋은 알고리즘과 소스코드도 많으니 참조하시기 바랍니다.
그럼
casting 하는 법
casting 질문
4바이트에서 8바이트로 캐스팅을 하려고 하는데 이때 4바이트의 MSB가 확장되지 않게 하려면 어떻게 해야 하나요.
즉 ffff ffff를 0x0000 0000 ffff ffff 식으로요.
casting 하는 법
여러 가지 방법이 있지만 가장 간단하게
or 연산을 한 번 해보면 됩니다.
f f f f f f f f --> 4 bytes
| 0000 0000 0000 0000 --> 8 bytes
--------------------
0000 0000 f f f f f f f f
댓글 달기