inChi 라이브러리 (여기에서 사용 가능 : http://www.iupac.org/home/publications/e-resources/inchi.html)의 부호없는 char을 long으로 캐스팅합니다. 이해하려고하는 SHA-2 알고리즘 (구현이 아닌 알고리즘)의 맞춤 구현이 있습니다. 코드의 특정 한 짧은 단편 정말 혼란 :SHA-2 알고리즘
이 매크로 이러한 맥락에서 사용된다#define PUT_UINT32_BE(n,b,i) \
{ \
(b)[(i) ] = (unsigned char) ((n) >> 24); \
(b)[(i) + 1] = (unsigned char) ((n) >> 16); \
(b)[(i) + 2] = (unsigned char) ((n) >> 8); \
(b)[(i) + 3] = (unsigned char) ((n) ); \
}
#endif
:
unsigned long total[2]; /*!< number of bytes processed */
:
unsigned char msglen[8];
low = (ctx->total[0] << 3);
PUT_UINT32_BE(low, msglen, 4);
문제가 총 long
의 표로서 정의된다
이렇게 합계가 처리 된 바이트 수를 절약하면 total[0]
이 256보다 클 수 있습니다. (이것이 아마로 정의 된 이유 일 것입니다)이 주조의 효과가 무엇인지 모르겠다. 에 unsigned char
에 PUT_UINT32_BE
매크로가 있습니까? 그게 주먹 x 바이트 또는 마지막 바이트 또는 total[0] % 256
받을까요?
매크로를 더 자세히 읽습니다. 32 비트 값의 각 8 비트 구성 요소를 가져 와서 재정렬합니다. –
오, 매크로에서 제공하는 컨텍스트에서 매크로가 어떻게 호출되는지 모르겠습니까? –
@JoachimPileborg - 컨텍스트가 수정되었습니다. 내 경우에는 low = 904이므로 unsigned char에 904를 어떻게 캐스팅 할 수 있습니까? – mnowotka