2010-08-09 3 views
-1
Anyone know what follow code does? 

질문에 대한 연산자를 수행한다 : &와 | 및 0xfcC#을 이상한 코드

salt[0] = (byte)((salt[0] & 0xfc) | (saltLen & 0x03)); 
    salt[1] = (byte)((salt[1] & 0xf3) | (saltLen & 0x0c)); 
    salt[2] = (byte)((salt[2] & 0xcf) | (saltLen & 0x30)); 
    salt[3] = (byte)((salt[3] & 0x3f) | (saltLen & 0xc0)); 
+7

그 행 바로 위에 어떤 설명이 있는지 알 수 있습니까? – Joey

+0

정확히 무엇을 혼동하고 있습니까? 코드 또는 설명에 대해 혼란 스럽다면 혼란 스러울만큼 정교 할 수 있습니까? –

+0

질문에 대한 연산자는 다음과 같습니다 : & and |, 0xfc – ozsenegal

답변

2

글쎄 위의 설명은 무엇을하는지 설명하지만, 운영자의 내역을 찾고있는 경우 :

  1. salt[i] 및 0 진수 (& 연산자)에서 비트 단위 and을 수행하십시오.
  2. 비트 단위로 andsalt[i] 및 두 번째 16 진수로 수행하십시오.
  3. 1 및 2 단계의 결과 (| 연산자)에 대해 비트 단위로 or을 수행하십시오.
  4. salt[i]

결과는 주석 블록에 기록되는 것이다에 byte

  • 스토어 결과 3 단계의 결과를 전송. 0xc0 형식의 번호는 16 진수로 기본 16입니다. c0은 십진수로 16*12 + 16*0 = 192과 같습니다. 16 진수에서는 9에서 숫자가 다 소모되므로 문자를 사용하기 시작합니다. 따라서 16에 이르면 한 자리 씩 이동하기 때문에 a = 10, b = 11, c = 12, d = 13, e = 14, f = 15이고 f는 가장 큰 숫자가됩니다 (16 기본입니다).

    은 참조 :

  • 0
    // Split salt length (always one byte) into four two-bit pieces and 
    // store these pieces in the first four bytes of the salt array. 
    

    이 건방진 대답하지만 내 의도는 이미 대답을 나타 내기 위해입니다, 제발 좀 더 자세한 내용이 필요하면 알려 주시기 바랍니다 :)

    +0

    그는 아마도 그것이 무엇을하는지에 대해 물어볼 의도 였을 것입니다.물론, 왜 그것이 더 흥미로운 질문입니다. – MZB

    3

    질문에 대한 연산자를 수행한다 : &와 | 및 0xfc

    관련 문제