Преобразование INT в бинарную запись.

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fire64, 28 Sep 2010.

  1. fire64

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

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    Как правильно записать число в нормальном виде ?

    Объясняю.

    берем число 17571
    Если его поместить в int, то в это будет выглядеть как A3 44

    Однако Hex значение числа 17571, на самом деле 44 A3

    Собственно вопрос, как число 17571 поместить в буфер в виде 44 A3, а не A3 44 ?
     
    #1 fire64, 28 Sep 2010
    Last edited: 28 Sep 2010
  2. Lee_fx

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

    Joined:
    27 Sep 2008
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    на самом деле 44a3 и записывается =)
    посмотреть бы пример с ошибкой...
     
  3. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    fire64, почитай это: http://ru.wikipedia.org/wiki/Порядок_байтов
     
  4. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    если просто как числа записать то
    Code:
    char b[2];
    b[0] = 17571 >> 8 & 0xff
    b[1] = 17571 & 0xff
    
    если как символы то
    Code:
    char tab[] = {
    '0', '1', '2', '3', '4', '5', '6', '7', '8', 
    '9', 'a', 'b', 'c', 'd', 'e', 'f'
    };
    
    void f(int dec)
    {
    	if (dec < 0)
    		putchar('-'), dec = -dec;
    	while (dec >= 16)
    	{
    		putchar(tab[dec % 16]);
    		dec /= 16;
    	}
    	putchar(tab[dec]);
            // reverse
    }