의 n 번째 바이트를 얻을 c는하지만 정수의 n 번째 바이트를 얻을하는 방법을 모르겠어요. 예를 들어, 1234는 00000000 00000000 00000100 11010010은 32 비트 정수로 어떻게 그 바이트를 모두 얻을 수 있습니까? 첫 번째는210 일 것이며, 제 4 될 마지막 두 것이다 0는</p> <pre><code>int x = number & ((1<<8)-1); </code></pre> <p>또는 <pre><code>int x = number & 0xFF; </code></pre> <p></p>를 사용하여 당신이 첫 번째 바이트를 얻을 수있어 정수
답변
int x = (number >> (8*n)) & 0xff;
여기서 n 등 첫번째 바이트 번째 바이트 1
괄호를 사용하십시오! '>>'또는'*'가 더 높은 우선 순위를 가졌는지 여부는 결코 구성원이 될 수 없습니다. –
int nth = (number >> (n * 8)) & 0xFF;
가장 낮은 바이트로 옮겨 "익숙한"방식으로 가져옵니다. 를 들어
int x = ((unsigned char *)(&number))[n];
(N 다음 (N + 1) (도 리틀 엔디안 86와 같은 기계에 상당한 most-하는 이내로 할 경우)가 메모리에 나타나는 어떤 순서 바이트 일에 대한
1) 이상에서 빅 엔디안 시스템에서 가장 중요한에 바이트 일 : 이상에서) 가장 중요한 (모든 엔디안 바이트 번째 (N + 1의 경우
int x = ((unsigned char *)(&number))[sizeof(int) - 1 - n];
) :
int x = ((unsigned int)number >> (n << 3)) & 0xff;
물론이 모두는 n
< sizeof(int)
이고 그 중 number
은 int
이라고 가정합니다.
우리가 int의 배열을 가지고 있다면, 어떻게 대답이 바뀔까요? int 배열의 시작 부분에서 n 번째 바이트의 값을 얻는 방법은 무엇입니까? – HoseinGhanbari
@HoseinGhanbari 같은 방법이지만'(n/sizeof (int)) '번째 배열 요소의'(n % sizeof (int))'번째 바이트를 찾으십시오. – Dmitri
- 1. Heredoc <<< 또는 <<?
- 2. github add <<<<<<< HEAD
- 3. (int) Math.pow (2, x) 및 1 << x
- 4. 연산자 << : std :: cout << i << (i << 1);
- 5. Tortoise svn <<<<를 파일에 추가 중!
- 6. const QList <int> warnings = QList <int>() << 0; GCC 4.7.2
- 7. << 셀프 블록
- 8. Linq 쿼리와 SortedList <int, list <int>>
- 9. Asp.net : <% # 또는 <%
- 10. Gemfile 구문 오류 : <<<<<<< localhost를 시작하려고 할 때 HEAD
- 11. <사전 <int, string>>
- 12. 연산자로 정수 승격 <<
- 13. 내가이 XML 파일</p> <pre><code><test> 
 <</test> </code></pre> <p>와 나는 아래의 자바 코드로 tranforming하고 있습니다
- 14. << - 상수는 무엇을합니까?
- 15. 어떤 수단 <<< PHP에서
- 16. 연산자 << 오류
- 17. << 연산자 오류
- 18. C++ : 벡터 <쌍 <vector<int>, INT>>
- 19. <? 및 <? php
- 20. <=
- 21. 무엇을 | << 평균?
- 22. 벡터 <int> v (istream_iterator <int> (cin), istream_iterator <int>());
- 23. 연산자 << 과부하
- 24. Ruby attr_reader는 <<
- 25. 인쇄 관련 질문 <<<
- 26. PHP <<< OUT 및 OUT;
- 27. PHP에서 "<<< SQL"이란 무엇입니까?
- 28. PHP <<<는 무슨 뜻입니까?
- 29. <<< OUT은 PHP에서 무엇을 의미합니까?
- 30. <<< CON in PHP 사용
예제에서 이미 비트 이동 연산자'<<'를 사용하고 있습니다. 당신의 숫자에서 다른 비트를 얻기 위해 어떻게 시프트 연산자를 사용할 수 있습니까? –
다른 비트 시프트 연산자를 시도하십시오. –
"첫 번째 바이트"- 여기서 사용한 것처럼 - 메모리의 첫 번째 바이트가 아닐 수도 있습니다. 귀하의 예 (1234)는 가장 낮은 주소에서 '11010010', 가장 높은 주소에서 '00000000'이 될 수 있습니다. – Thanatos