[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. SwitcH

    SwitcH Member

    Joined:
    12 Sep 2009
    Messages:
    0
    Likes Received:
    49
    Reputations:
    0
    циклический сдвиг на С++

    подскажите пожалуйсто, как на С++ реализовать циклический сдвиг влево/вправо на m бит байта (unsigned char b)
     
    5 people like this.
  2. ZirroCool

    ZirroCool Elder - Старейшина

    Joined:
    16 Sep 2006
    Messages:
    128
    Likes Received:
    55
    Reputations:
    20
    SwitcH, тебя на гугле забанили?
    http://www.insidepro.com/kk/195r.shtml
     
  3. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    unsigned char a = 0x12;
    _asm{
    mov al, a
    rol/ror al, 10
    mov a, al
    }
     
  4. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    Code:
    	DWORD rol32(DWORD x, UINT n){
    		return( ((x) << (n)) | ((x) >> (32-(n))) );
    	};
    
    	DWORD ror32(DWORD x, UINT n){
    		return( ((x) >> (n)) | ((x) << (32-(n))) );
    	};
    
    	BYTE rol8(BYTE x, UINT n){
    		return( ((x) << (n)) | ((x) >> (8-(n))) );
    	};
    	BYTE ror8(BYTE x,UINT n){
    		return( ((x) >> (n)) | ((x) << (8-(n))) );
    	};
    Юзать асм вставки в с++ надо в очень крайних случаях, которые я еще не встречал =)
     
    1 person likes this.
  5. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    ну тогда уж
    #define ror8(x, n) ( ((x) >> (n)) | ((x) << (8-(n))) )

    или функции
    _rotl, _rotl16, _rotl64, _rotl8 и _rotr аналогичные
     
    2 people like this.
  6. SwitcH

    SwitcH Member

    Joined:
    12 Sep 2009
    Messages:
    0
    Likes Received:
    49
    Reputations:
    0
    а можно без использования каких либо вставок ассемблера, например так
    Code:
    void main()
    {
    	int b=9, m=1;
    	while (b!=0)
    	{
    
    	b= b>>m;
    	cout << b <<endl;
    	
    	getch();
    
    	}
    
    }
     
    10 people like this.
  7. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    SwitcH
    это не циклический сдвиг.

    desTiny
    угу, но я не люблю дефайны. я сделал себе хидер с классом со статик методами, реализованными прямо в хидере, и скинул в папку своих классов, прописанную в настройках студию. В итоге делаю #include <bitworks.hpp>
    и Bitworks::ror32(...);
    Нагляднее и удобнее. И файл в проект добавлять не надо, компилится так, в отличие если делать реализацию в cpp файле.
     
    1 person likes this.
  8. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    Столкнулся тут с проблемой.
    Есть массив координат например mas[10][2]. т.е.:
    x 200 300 120 ...
    y 50 100 300 ...
    так вот я беру еще одну координату например 25;25
    Надо проверить в радиусе 5-ти клеток есть ли какие либо координаты из массива.
    Если рядом есть точка вернуть 0, нету вернуть 1.
    Сам составил, но видимо уже не соображаю, у меня то он сверяется только с первой координатой массива, то только с последней.
     
  9. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    покажи код
     
  10. n4e/\@

    n4e/\@ Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    138
    Likes Received:
    17
    Reputations:
    0
    Все сам составил:
    Code:
    for ( int i = 0; i < coordinates[0].size(); i++)
            if (  coordinat[0][i] + SizePen > mouse->x() && coordinat[0][i] - SizePen < mouse->x() && coordinat[1][i] + SizePen > mouse->y() && coordinat[1][i] - SizePen < mouse->y()  ) 
     
    #3850 n4e/\@, 5 Oct 2009
    Last edited: 5 Oct 2009
  11. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Ну может есть у кого исходник виря на C++?
    Мне понят алгоритм размножение и т.п. ))))
     
  12. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    http://www.codeproject.com/info/search.aspx?artkw=rootkit
    это про руткиты, по-моему самое важное в вирях...
    тоны исходников и описания к ним. (все на инглише)
    а размножение ctrl+C ctrl+V
     
    #3852 Irdis, 5 Oct 2009
    Last edited: 5 Oct 2009
  13. gLuk!

    gLuk! New Member

    Joined:
    27 Mar 2009
    Messages:
    27
    Likes Received:
    0
    Reputations:
    0
    PHP:
    char *RbcMessage[] =
    {
    "GET http://192.168.1.2/index.php?dfg HTTP/1.1\r\n",
    "Connection: Keep-Alive\r\n",
    "Accept: */*\r\n",
    "Referer: http://www.127.0.0.1.ru\r\n",
    "Accept-Language: ru\r\n",
    "Accept-Encoding: gzip, deflate\r\n",
    "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)\r\n",
    "Host: 192.168.1.2\r\n\r\n\r\n",
    NULL
    };
    int iMsg 0;
            
    bool boolean;
            
    char buffer[100];
            
    int DataLen;
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,2), &WSAData);
    SOCKET sock;
    sock socket(AF_INET,SOCK_STREAM,0);
    sockaddr_in sendsock;
    sendsock.sin_family AF_INET;
    sendsock.sin_port htons(80);
    sendsock.sin_addr.s_addr=inet_addr("http://192.168.1.2/index.php");
    connect(sock,(LPSOCKADDR)&sendsock,sizeof(sendsock));
    for(
    iMsg 0;(RbcMessage[iMsg]); iMsg++)
    send(sock, (LPSTR)RbcMessagestrlen(RbcMessage[iMsg]), 0);
    closesocket(sock);
    собсно тестил на локалхосте. даже логов в апаче о коннекте нету =\.
     
  14. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Может стоит для начала пример из мсдна посмотреть?
    http://msdn.microsoft.com/en-us/library/ms740121%28VS.85%29.aspx
     
    _________________________
    1 person likes this.
  15. intNet

    intNet Member

    Joined:
    31 May 2009
    Messages:
    29
    Likes Received:
    14
    Reputations:
    5
    Параметр данной ф-ии может быть только ip адрес.
    Чиатай rfc по протоколу HTTP.
     
  16. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    Всем привет!
    Нужна помощь.
    Нужно перевести чимволы в ASCII код и наоборот.

    В аски код вроде все ок:
    ...
    char text[] = "test";
    int ascii = (int)text;
    ...

    А вот наоборот как - хз..

    Если делать так:

    ...
    int ascii = (int)text;
    char nazad = (char)ascii;
    ...

    Тогда переводится один байт, то есть а переменную nazad помещается 1 байт.

    А с массивом не выходит =\

    Выручайте!
     
  17. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    и что там у тебя все ок? ты просто записываешь в переменную ascii адрес строки. Опиши нормально, что ты хочешь получить? int, заполненный кодами символов или что.

    ps: размер char сколько в байтах? И как ты ожидаешь туда засунуть больше одного байта?
     
  18. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    char лучше оставлять char"ом
    Code:
    	const int length=10;	
    	char a[length] = "123123";
    	int b[length];
    	for (int i=0; i<length;i++) // берём код символа
    		b[i]=(int)a[i];
    	for (int i=0; i<length;i++) //наоборот
    		a[i]=(char)b[i];
    
    char <- 1байт
    int <- 4байт
    получаем увеличение в 4 раза. Что не есть гуд.
     
    #3858 Irdis, 5 Oct 2009
    Last edited: 6 Oct 2009
    1 person likes this.
  19. -m0rgan-

    -m0rgan- Elder - Старейшина

    Joined:
    29 Sep 2008
    Messages:
    514
    Likes Received:
    170
    Reputations:
    17
    > пиши нормально, что ты хочешь получить? int, заполненный кодами символов или что.

    Мне необходимо перевести латинские и русские символы в ASCII коды.

    >ps: размер char сколько в байтах? И как ты ожидаешь туда засунуть больше одного байта?

    Это меня и интересует, каким образом выполнить обратную операцию и поместиьть результат в массив?
     
  20. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
Thread Status:
Not open for further replies.