(AES 암호화에서) 암호문을 16 진수 값으로 변환하려고합니다.문자를 16 진수로 변환
나는 변환 (상태가 암호문) 다음 코드를 사용하고이 암호문에 대한
foreach(char *v, state) {
printf("%02X", *v);
}
:
2734FFFFFFA5575BFFFFFF99FFFFFFFAFFFFFFCB6A240BFFFFFFD318FFFFFFB65536
:
'4¥W[™úËj$Ó¶U6
나는이 출력을 얻을
이 암호문에 올바른 16 진수 형식이 아닙니다. 나는 같은 결과를 가져 오는 다른 변환 방법을 시도했다.
편집 : foreach는 코드 :
#define foreach(item, array) \
for(int keep = 1, \
count = 0,\
size = sizeof (array)/sizeof *(array); \
keep && count != size; \
keep = !keep, count++) \
for(item = (array) + count; keep; keep = !keep)
부호없는 값이 필요합니다. 그렇지 않으면 부호 비트가 확장됩니다. '* v'를'unsigned char'로 변환하십시오. – WhozCraig
'foreach' 매크로는 최소한 유지 보수가 가능한 코드 상을받을 수 있습니다. – unwind
이것은 매크로를 사용하는 아주 나쁜 방법입니다. 'sizeof * (array)'라는 정의 안에 적어도 하나의 에러가 있고,'foreach (char * v, state)'를 호출하는 방식에서 하나의 에러가 있다는 사실 외에도, 당신이 그 안에서 무엇을하려고하는지 이해하십시오. 정상적인 함수로 작성하면 문제가 드러날 가능성이 높습니다 (그렇지 않은 경우 코드를 쉽게 디버깅하여 찾을 수 있음). –