본문 바로가기

쓰기

 // Test.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//
#include <stdio.h>
#include <tchar.h>
#include <math.h>

typedef unsigned int UINT;

struct BoolArray{
    bool Data[32];
};

BoolArray NewBoolArray();

UINT Algorithm(char * szSource);
BoolArray Plus(BoolArray arSource,char cAdd);
BoolArray Shift(BoolArray arSource,int nSize);
BoolArray Or(BoolArray ar1,BoolArray ar2);
UINT RetArray(BoolArray arTmp);

const int rotateBy=7;

int main(int argc, char* argv[])
{
    char * szText = "Test Text";
    UINT uAnswer = Algorithm(szText);

    printf("%un",uAnswer);
    return 0;
}

UINT Algorithm(char * szText)
{
    UINT uRet=0;
    BoolArray arTemp = NewBoolArray();
    int nSize = strlen(szText); //길이를 구했음
    for(int i=0;i<nSize;i++)
    {
        arTemp = Plus(Or(Shift(arTemp,rotateBy),Shift(arTemp,rotateBy-32)),szText[i]);
        //문제의 그 연산 -_-;
    }
    return RetArray(arTemp);
}

//초기화 함수입니다. VB에선 자동으로 해줄듯 -_-;
BoolArray NewBoolArray()
{
    BoolArray arTemp;
    for(int i=31;i>=0;i--)
    {
        arTemp.Data[i]=0;
    }
    return arTemp;
}

BoolArray Plus(BoolArray arSource,char cAdd)
{

    //숫자를 더합니다...

    int nTemp = cAdd; //귀찮아서 미리 변환 -_-

    //일단 변환
    BoolArray arChar = NewBoolArray();
    //pow(a,b)는 a^b와 동일합니다.
    int nPow=(float)pow((float)2,8);
    int nPow2=nPow/2;
    for(int i=7;i>=0;i--)
    {
        if((nTemp%nPow)/nPow2>0)
        {
            arChar.Data[i]=1;
        }
        nPow = nPow2;
        nPow2 = nPow/2;
    }

    //더하기 -_-;
    BoolArray arRet = NewBoolArray();
    int nFlag=0;
    for(int i=0;i<32;i++)
    {
        int nTemp= nFlag+arChar.Data[i]+arSource.Data[i];
        if(nTemp>1)
            nFlag=1;
        else
            nFlag=0;

        if(nTemp%2==1)
            arRet.Data[i]=1;
        else
            arRet.Data[i]=0;
    }

    return arRet;
}

//Shift연산입니다. +면 <<, -면 >>입니다.
BoolArray Shift(BoolArray arSource,int nSize)
{
    BoolArray arRet=NewBoolArray();

    for(int i=0;i<32;i++)
    {
        int nTemp=i+nSize;
        if(0<=nTemp&&nTemp<32)
        {
            arRet.Data[nTemp]=arSource.Data[i];
        }
    }

    return arRet;
}

//Or연산입니다.
BoolArray Or(BoolArray ar1,BoolArray ar2)
{
    BoolArray arRet = NewBoolArray();

    for(int i=0;i<32;i++)
    {
        if(ar1.Data[i] != 0 || ar2.Data[i] != 0)
        {
            arRet.Data[i]=1;
        }
    }
    return arRet;
}
UINT RetArray(BoolArray arTmp)
{
    UINT uRet=0;
    for(int i=31;i>=0;i--)
    {
        uRet = uRet * 2;
        if(arTmp.Data[i]==1)
        {
            uRet = uRet + 1;
        }
    }
    return uRet;
}


원본 코드가 단지
typedef unsigned int HASH;

//---------------------------------------------------------
// sample hash creation functions
//---------------------------------------------------------
inline HASH HashRotateLeft( HASH hash, const unsigned int rotateBy )
{
    return (hash<<rotateBy)|(hash>>(32-rotateBy));
}

//---------------------------------------------------------
// create a hash from a string
//---------------------------------------------------------
template<typename T>
inline HASH MakeStringHash( const T *pString )
{
    HASH        ret = 0;
    T            c;

    if( pString )
    {
        while( c=*(pString++) )
            ret = HashRotateLeft(ret,7) + c;
    }
    return ret;
}

이것뿐이란걸 생각해보면 그냥 후덜덜 하군요.


아. 혹시나 해서 이 게시물의 의미에 대해서 설멍
VB로 위의 MakeStringHash함수를 옮겨야 하는데,
VB에서는 비트 연산자가 없기 때문에 -_-;;
일일히 기본 연산을 가지고 처리하도록 새로만든 함수입니다.

완성된 내용은 VB로 저 내용을 간단히 옮길 수 있으....리라고 봅니다만,
어떨지는 모르겠습니다.
분류 :
Talk
조회 수 :
10779
등록일 :
2009.01.05
16:14:17
엮인글 :
https://arallab.hided.net/4199/794/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/4199

HaruKaze

2009.01.05
16:28:06
감사합니다.....(_ _)

이렇게 풀어서 다시 짜주시다니...ㅠ.ㅠ
 
머리 아프셨을텐데 정말 정말 감사드립니다...(_ _)

HaruKaze

2009.01.05
18:30:52
드디어 완성했습니다...ㅠ.ㅠ

조만간 커스텀스크립트용 번역툴을 만들어서 배포하겠습니다.


감사합니다....(_ _)

Hide_D

2009.01.05
16:29:03
아마 기호랑 명령어만 좀 고치면
VB로 바로 쓸수 있을거에요
List of Articles
번호 제목 글쓴이 조회 수sort 추천 수 날짜 최근 수정일
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 155439   2008-08-03 2008-12-16 00:03
209 Talk Re: SOW 모드의 신기한 점? file whoami 11209   2008-07-23 2009-01-06 01:27
 
208 Talk 사용자대본 지나가다정착한이A님 특별판[...] file Hide_D 11242   2008-10-02 2009-01-06 01:24
 
207 Archive [소스, 파일] 기리기리, 페이트 전용 매크로(완료) [4] file Hide_D 11256   2008-10-07 2008-10-09 00:08
 
206 Archive 후킹방식 바꾼 ATCTNR.DLL [5] file 아랄 11319   2008-12-31 2009-01-06 00:46
 
205 Talk CustomDic의 치환문자열에 대해 ( Hide님께) [2] 호기심맨 11323   2009-01-03 2009-01-05 00:04
안녕하세요 Hide님..저도 전부터 CustomDic유사한걸 만드드라 알아내고 여러번 Test해봐서 얻어낸 결론인데요.. 지금 Hide님이 정의하신 치환문자열"@*_D..../"보다는 역시 실제 쓰일리없는 엉망진창인 알파벳문자열이 훨씬 더 변역결과가 좋더군요. (주로 한...  
204 Talk 조만간 멀티플러그인은 기본 기능으로 흡수시킬까 합니다. 아랄 11346   2008-09-21 2009-01-06 01:25
그리고 ExtTextOut문제를 빨리 해결.. 기리기리 최신 패턴에 대한 업데이트 SVN 저장소 정리하기 등등.. 할게 많군여 ;;  
203 Talk [질문] CustomDic필터와 FixLine의 셋팅순서 [4] 호기심맨 11404   2009-01-03 2009-01-04 14:58
멀티플러그인 필터를 만들려고 하면서 제일 의문이 드는 부분인데요 그 필터들의 실행순서가 어떻게 결정되는지가 무척 궁금하네요 그러니까 예를 들어 A,B,C 3개의 필터를 순서대로 셋팅했다고 가정하면 제가 파악하기로는 알고리즘 코드 ↓ AFilter.OnPreTran...  
202 Talk FixLine 기능 추가 [1] Hide_D 11416   2009-03-13 2009-03-13 21:23
rn r 이런식으로 나올때 r이 우선 적용되는 문제를 해결할것 -가능한 방법- 1. Greedy, UnGreedy의 부분적 적용 2. 우선순위 선택 3. 정규식과 맞짱뜨기 4. 어정쩡한 조건문 (r)(n) 이면 둘중 하나 있거나, 둘다 있거나 하면 그렇게 지정되는걸로 - 류제로님의...  
201 Talk 역시 번역 플러그인 테스트용으론 Hide_D 11417   2008-07-21 2008-07-21 12:50
체험판이 최고군요 +_+ 사쿠라슈트랏세웹 체험판 설치해놓고 전에 관리자님이 올리신 코드로 잘 돌아가니 이걸로 테스트 해야겠군요  
200 Archive [플러그인,소스] EzTransXP with 사용자사전플러그인(테스트 버전) 20080720_1 [6] file Hide_D 11446   2008-07-20 2008-07-21 13:59
 
199 Archive [플러그인,소스] FixLine 테스트버전 081219 file Hide_D 11449   2008-12-19 2008-12-19 13:03
 
198 Archive 번역용 작업툴 v0.2.2 [2] file HaruKaze 11464   2009-01-06 2009-01-06 23:48
 
197 Archive [플러그인] ATCode 테스트 버전 20081210 file whoami 11500   2008-12-11 2008-12-11 00:07
 
196 Talk 히데님이 말씀하신 테스트파일 [2] file 유르_리샤 11530   2008-12-29 2008-12-30 08:25
 
195 Talk 빈공간[...] file Hide_D 11531   2008-08-16 2008-08-19 00:01
 
194 Archive [소스] ATCode 테스트버전 20081203 file whoami 11548   2008-12-16 2009-01-06 00:51
 
193 Archive [플러그인, 소스] DenyWord 테스트 버전 20081203(4) [버그] [1] file Hide_D 11557   2008-12-03 2008-12-03 17:58
 
192 Talk 일단, 옵션창 이렇게 생기면 되나요? file Hide_D 11569   2008-09-22 2009-01-06 01:25
 
191 Archive [소스] 플러그인 개발을 위한 기본 프레임워크 20080712 [2] file whoami 11600   2008-07-12 2008-07-12 21:12
 
190 Talk ATCode UI 버그 [1] Hide_D 11730   2008-11-01 2009-01-06 01:03
HOOK(0x00480A10,TRANS([ESP+0x28],PTRCHEAT,SAFE)),ENCODEKOR,HOOK(0x005622B0,TRANS([ESP+0x4],PTRCHEAT ​ ,SAFE)),HOOK(0x00562CB0,TRANS([ESP+0x4],PTRCHEAT,SAFE)),HOOK(0x004F5590,TRANS([ESP+0x4],PTRCHEAT,SAFE)) ​ ,HOOK(0x00481790,TRANS([ESP+0x40]...