how to put 8 "int" => 10100010 into one character of type "char"

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Anna

    how to put 8 "int" => 10100010 into one character of type "char"

    I try to put 8 int bit for example 10100010 into one character of type
    char(1 octet) with no hope . Could anyone propose a simple way to do
    it? Thank you very much.
  • Ben Bacarisse

    #2
    Re: how to put 8 "int&qu ot; => 10100010 into one character of type "char&quot ;

    Anna <petitmouton@gm ail.comwrites:
    I try to put 8 int bit for example 10100010 into one character of type
    char(1 octet) with no hope . Could anyone propose a simple way to do
    it? Thank you very much.
    It would help is we saw what you did. I would write:

    unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */

    Not that unsigned char is almost always safer for this sort of thing.

    --
    Ben.

    Comment

    • Anna

      #3
      Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;

      On 15 juin, 11:52, Ben Bacarisse <ben.use...@bsb .me.ukwrote:
      Anna <petitmou...@gm ail.comwrites:
      I try to put 8 int bit for example 10100010 into one character of type
      char(1 octet) with no hope . Could anyone propose a simple way to do
      it? Thank you very much.
      >
      It would help is we saw what you did. I would write:
      >
      unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
      >
      Not that unsigned char is almost always safer for this sort of thing.
      >
      --
      Ben.
      thank you Ben. I have bit sequence 01010101.... that I want to
      implement into a simulator, but in the simulator, they use a char as a
      type of data since each int comprise between 2-4 octet and one char is
      only 1 octet (=8 bits 0 or 1). I guess it will make the simulator run
      faster, I'm not sure.

      Comment

      • Ben Bacarisse

        #4
        Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;

        Anna <petitmouton@gm ail.comwrites:
        On 15 juin, 11:52, Ben Bacarisse <ben.use...@bsb .me.ukwrote:
        >Anna <petitmou...@gm ail.comwrites:
        I try to put 8 int bit for example 10100010 into one character of type
        char(1 octet) with no hope . Could anyone propose a simple way to do
        it? Thank you very much.
        >>
        >It would help is we saw what you did. I would write:
        >>
        > unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
        >>
        >Not that unsigned char is almost always safer for this sort of thing.
        >>
        >--
        >Ben.
        Best not quote sig blocks.
        thank you Ben. I have bit sequence 01010101.... that I want to
        implement into a simulator, but in the simulator, they use a char as a
        type of data since each int comprise between 2-4 octet and one char is
        only 1 octet (=8 bits 0 or 1). I guess it will make the simulator run
        faster, I'm not sure.
        For your information, in C a char is not always an octet and there are
        systems where the sizes of the various types can be quite surprising.
        I don't think that affects your question, though.

        I can't tell if I answered your question. If I did not, you need to
        give much more information. Some actual code is often the best way
        for people here to see what the problem is.

        --
        Ben.

        Comment

        • Anna

          #5
          Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;

          On 15 juin, 12:20, Ben Bacarisse <ben.use...@bsb .me.ukwrote:
          Anna <petitmou...@gm ail.comwrites:
          On 15 juin, 11:52, Ben Bacarisse <ben.use...@bsb .me.ukwrote:
          Anna <petitmou...@gm ail.comwrites:
          I try to put 8 int bit for example 10100010 into one character of type
          char(1 octet) with no hope . Could anyone propose a simple way to do
          it? Thank you very much.
          >
          It would help is we saw what you did. I would write:
          >
          unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
          >
          Not that unsigned char is almost always safer for this sort of thing.
          >
          --
          Ben.
          >
          Best not quote sig blocks.
          >
          thank you Ben. I have bit sequence 01010101.... that I want to
          implement into a simulator, but in the simulator, they use a char as a
          type of data since each int comprise between 2-4 octet and one char is
          only 1 octet (=8 bits 0 or 1). I guess it will make the simulator run
          faster, I'm not sure.
          >
          For your information, in C a char is not always an octet and there are
          systems where the sizes of the various types can be quite surprising.
          I don't think that affects your question, though.
          >
          I can't tell if I answered your question. If I did not, you need to
          give much more information. Some actual code is often the best way
          for people here to see what the problem is.
          >
          --
          Ben.
          I think I'll have to try to understand the simulator first. it's a
          very complicate network simulator with lots of code :-(. I will try to
          implement what you suggested and will post the code if I have further
          information. thank you very much.

          Comment

          • viza

            #6
            Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type&quot;char& quot;

            Hi

            On Sun, 15 Jun 2008 03:00:50 -0700, Anna wrote:
            On 15 juin, 11:52, Ben Bacarisse <ben.use...@bsb .me.ukwrote:
            >Anna <petitmou...@gm ail.comwrites:
            I try to put 8 int bit for example 10100010 into one character of
            type char(1 octet) with no hope . Could anyone propose a simple way
            to do it? Thank you very much.
            >>
            >It would help is we saw what you did. I would write:
            >>
            > unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
            >>
            >Not that unsigned char is almost always safer for this sort of thing.
            >>
            thank you Ben. I have bit sequence 01010101.... that I want to implement
            into a simulator, but in the simulator, they use a char as a type of
            data since each int comprise between 2-4 octet and one char is only 1
            octet (=8 bits 0 or 1). I guess it will make the simulator run faster,
            I'm not sure.
            Do you mean that you have eight integers but that each one has either the
            value 1 or 0? In that case, do:

            Est-ce que vous-voulez dire que vous avez huite integers et que chaqun
            d'entre eux a le valeur 1 ou 0? En ce cas, faitez:

            int integers[8];
            unsigned char character;

            character= ( integers[0] ? (1 << 0) : 0 )
            | ( integers[1] ? (1 << 1) : 0 )
            | ( integers[2] ? (1 << 2) : 0 )
            | ( integers[3] ? (1 << 3) : 0 )
            | ( integers[4] ? (1 << 4) : 0 )
            | ( integers[5] ? (1 << 5) : 0 )
            | ( integers[6] ? (1 << 6) : 0 )
            | ( integers[7] ? (1 << 7) : 0 );

            Actually this works if the integers have the value 0 or non-0. If you
            are certain that they can only be 1 or 0, the following may be faster:

            Ceci marche si les integers ont les valeurs 0 ou non-0. Si vous etez
            certain que ils n'ont que 1 ou 0, le ci-dessus peut-etre plus vite:

            character= (integers[0] << 0)
            | ( integers[1] << 1)
            | ( integers[2] << 2)
            | ( integers[3] << 3)
            | ( integers[4] << 4)
            | ( integers[5] << 5)
            | ( integers[6] << 6)
            | ( integers[7] << 7);

            HTH
            viza


            Comment

            • CBFalconer

              #7
              Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type&quot;char& quot;

              viza wrote:
              Anna wrote:
              >Ben Bacarisse <ben.use...@bsb .me.ukwrote:
              >>Anna <petitmou...@gm ail.comwrites:
              >>>
              >>>I try to put 8 int bit for example 10100010 into one character
              >>>of type char(1 octet) with no hope . Could anyone propose a
              >>>simple way to do it? Thank you very much.
              >>>
              >>It would help is we saw what you did. I would write:
              >>>
              >> unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
              >>>
              >>Not that unsigned char is almost always safer for this sort of
              >>thing.
              >>
              >thank you Ben. I have bit sequence 01010101.... that I want to
              >implement into a simulator, but in the simulator, they use a
              >char as a type of data since each int comprise between 2-4 octet
              >and one char is only 1 octet (=8 bits 0 or 1). I guess it will
              >make the simulator run faster, I'm not sure.
              >
              Do you mean that you have eight integers but that each one has
              either the value 1 or 0? In that case, do:
              >
              Est-ce que vous-voulez dire que vous avez huite integers et que
              chaqun d'entre eux a le valeur 1 ou 0? En ce cas, faitez:
              >
              int integers[8];
              unsigned char character;
              >
              character= ( integers[0] ? (1 << 0) : 0 )
              | ( integers[1] ? (1 << 1) : 0 )
              | ( integers[2] ? (1 << 2) : 0 )
              | ( integers[3] ? (1 << 3) : 0 )
              | ( integers[4] ? (1 << 4) : 0 )
              | ( integers[5] ? (1 << 5) : 0 )
              | ( integers[6] ? (1 << 6) : 0 )
              | ( integers[7] ? (1 << 7) : 0 );
              >
              Actually this works if the integers have the value 0 or non-0.
              If you are certain that they can only be 1 or 0, the following
              may be faster:
              >
              Ceci marche si les integers ont les valeurs 0 ou non-0. Si vous
              etez certain que ils n'ont que 1 ou 0, le ci-dessus peut-etre
              plus vite:
              >
              character= (integers[0] << 0)
              | ( integers[1] << 1)
              | ( integers[2] << 2)
              | ( integers[3] << 3)
              | ( integers[4] << 4)
              | ( integers[5] << 5)
              | ( integers[6] << 6)
              | ( integers[7] << 7);
              What gives you the idea that Anna speaks French?

              --
              [mail]: Chuck F (cbfalconer at maineline dot net)
              [page]: <http://cbfalconer.home .att.net>
              Try the download section.


              ** Posted from http://www.teranews.com **

              Comment

              • Joachim Schmitz

                #8
                Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type&quot;char& quot;

                CBFalconer wrote:
                What gives you the idea that Anna speaks French?
                Her email address petitmuoton?


                Comment

                • Joe Wright

                  #9
                  Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type&quot;char& quot;

                  CBFalconer wrote:
                  viza wrote:
                  >Anna wrote:
                  >>Ben Bacarisse <ben.use...@bsb .me.ukwrote:
                  >>>Anna <petitmou...@gm ail.comwrites:
                  >>>>
                  >>>>I try to put 8 int bit for example 10100010 into one character
                  >>>>of type char(1 octet) with no hope . Could anyone propose a
                  >>>>simple way to do it? Thank you very much.
                  >>>It would help is we saw what you did. I would write:
                  >>>>
                  >>> unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
                  >>>>
                  >>>Not that unsigned char is almost always safer for this sort of
                  >>>thing.
                  >>thank you Ben. I have bit sequence 01010101.... that I want to
                  >>implement into a simulator, but in the simulator, they use a
                  >>char as a type of data since each int comprise between 2-4 octet
                  >>and one char is only 1 octet (=8 bits 0 or 1). I guess it will
                  >>make the simulator run faster, I'm not sure.
                  >Do you mean that you have eight integers but that each one has
                  >either the value 1 or 0? In that case, do:
                  >>
                  >Est-ce que vous-voulez dire que vous avez huite integers et que
                  >chaqun d'entre eux a le valeur 1 ou 0? En ce cas, faitez:
                  >>
                  >int integers[8];
                  >unsigned char character;
                  >>
                  >character= ( integers[0] ? (1 << 0) : 0 )
                  > | ( integers[1] ? (1 << 1) : 0 )
                  > | ( integers[2] ? (1 << 2) : 0 )
                  > | ( integers[3] ? (1 << 3) : 0 )
                  > | ( integers[4] ? (1 << 4) : 0 )
                  > | ( integers[5] ? (1 << 5) : 0 )
                  > | ( integers[6] ? (1 << 6) : 0 )
                  > | ( integers[7] ? (1 << 7) : 0 );
                  >>
                  >Actually this works if the integers have the value 0 or non-0.
                  >If you are certain that they can only be 1 or 0, the following
                  >may be faster:
                  >>
                  >Ceci marche si les integers ont les valeurs 0 ou non-0. Si vous
                  >etez certain que ils n'ont que 1 ou 0, le ci-dessus peut-etre
                  >plus vite:
                  >>
                  >character= (integers[0] << 0)
                  > | ( integers[1] << 1)
                  > | ( integers[2] << 2)
                  > | ( integers[3] << 3)
                  > | ( integers[4] << 4)
                  > | ( integers[5] << 5)
                  > | ( integers[6] << 6)
                  > | ( integers[7] << 7);
                  >
                  What gives you the idea that Anna speaks French?
                  >
                  Calling herself 'petitmouton' is a clue.

                  --
                  Joe Wright
                  "Everything should be made as simple as possible, but not simpler."
                  --- Albert Einstein ---

                  Comment

                  • Malcolm McLean

                    #10
                    Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;


                    "viza" <tom.viza@gmil. comwrote in message
                    On Sun, 15 Jun 2008 03:00:50 -0700, Anna wrote:
                    >
                    Est-ce que vous-voulez dire que vous avez huite integers et que chaqun
                    d'entre eux a le valeur 1 ou 0? En ce cas, faitez:
                    >
                    Crosspost French to comp.lang.c.fr

                    --
                    Free games and programming goodies.


                    Comment

                    • Malcolm McLean

                      #11
                      Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;


                      "Anna" <petitmouton@gm ail.comwrote in message
                      thank you Ben. I have bit sequence 01010101.... that I want to
                      implement into a simulator, but in the simulator, they use a char as a
                      type of data since each int comprise between 2-4 octet and one char is
                      only 1 octet (=8 bits 0 or 1). I guess it will make the simulator run
                      faster, I'm not sure.
                      >>
                      char inputchar = 0x55; will set the variable inputchar to 01010101

                      --
                      Free games and programming goodies.


                      Comment

                      • Antoninus Twink

                        #12
                        Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;

                        On 15 Jun 2008 at 15:27, Malcolm McLean wrote:
                        "viza" <tom.viza@gmil. comwrote in message
                        >Est-ce que vous-voulez dire que vous avez huite integers et que chaqun
                        >d'entre eux a le valeur 1 ou 0? En ce cas, faitez:
                        >>
                        Crosspost French to comp.lang.c.fr
                        Describing that as French is more than a little generous...

                        Comment

                        • Anna

                          #13
                          Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;

                          On 15 juin, 13:33, viza <tom.v...@gmil. comwrote:
                          Hi
                          >
                          >
                          >
                          On Sun, 15 Jun 2008 03:00:50 -0700, Anna wrote:
                          On 15 juin, 11:52, Ben Bacarisse <ben.use...@bsb .me.ukwrote:
                          Anna <petitmou...@gm ail.comwrites:
                          I try to put 8 int bit for example 10100010 into one character of
                          type char(1 octet) with no hope . Could anyone propose a simple way
                          to do it? Thank you very much.
                          >
                          It would help is we saw what you did. I would write:
                          >
                          unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
                          >
                          Not that unsigned char is almost always safer for this sort of thing.
                          >
                          thank you Ben. I have bit sequence 01010101.... that I want to implement
                          into a simulator, but in the simulator, they use a char as a type of
                          data since each int comprise between 2-4 octet and one char is only 1
                          octet (=8 bits 0 or 1). I guess it will make the simulator run faster,
                          I'm not sure.
                          >
                          Do you mean that you have eight integers but that each one has either the
                          value 1 or 0? In that case, do:
                          >
                          Est-ce que vous-voulez dire que vous avez huite integers et que chaqun
                          d'entre eux a le valeur 1 ou 0? En ce cas, faitez:
                          >
                          int integers[8];
                          unsigned char character;
                          >
                          character= ( integers[0] ? (1 << 0) : 0 )
                          | ( integers[1] ? (1 << 1) : 0 )
                          | ( integers[2] ? (1 << 2) : 0 )
                          | ( integers[3] ? (1 << 3) : 0 )
                          | ( integers[4] ? (1 << 4) : 0 )
                          | ( integers[5] ? (1 << 5) : 0 )
                          | ( integers[6] ? (1 << 6) : 0 )
                          | ( integers[7] ? (1 << 7) : 0 );
                          >
                          Actually this works if the integers have the value 0 or non-0. If you
                          are certain that they can only be 1 or 0, the following may be faster:
                          >
                          Ceci marche si les integers ont les valeurs 0 ou non-0. Si vous etez
                          certain que ils n'ont que 1 ou 0, le ci-dessus peut-etre plus vite:
                          >
                          character= (integers[0] << 0)
                          | ( integers[1] << 1)
                          | ( integers[2] << 2)
                          | ( integers[3] << 3)
                          | ( integers[4] << 4)
                          | ( integers[5] << 5)
                          | ( integers[6] << 6)
                          | ( integers[7] << 7);
                          >
                          HTH
                          viza
                          Bonjour Viza,
                          Bien joué, je parle français aussi :-) merce beaucoup pour ta réponse.
                          Je trouve très intéressant et je pense que je vais essayer
                          d'implementer ce ci sur mon programme. Merci, merci, merci
                          Anna

                          Comment

                          • Anna

                            #14
                            Re: how to put 8 &quot;int&qu ot; =&gt; 10100010 into one character of type &quot;char&quot ;

                            On 15 juin, 13:33, viza <tom.v...@gmil. comwrote:
                            Hi
                            >
                            >
                            >
                            On Sun, 15 Jun 2008 03:00:50 -0700, Anna wrote:
                            On 15 juin, 11:52, Ben Bacarisse <ben.use...@bsb .me.ukwrote:
                            Anna <petitmou...@gm ail.comwrites:
                            I try to put 8 int bit for example 10100010 into one character of
                            type char(1 octet) with no hope . Could anyone propose a simple way
                            to do it? Thank you very much.
                            >
                            It would help is we saw what you did. I would write:
                            >
                            unsigned char c = 0xA2; /* Hex A2 is 1010 0010 */
                            >
                            Not that unsigned char is almost always safer for this sort of thing.
                            >
                            thank you Ben. I have bit sequence 01010101.... that I want to implement
                            into a simulator, but in the simulator, they use a char as a type of
                            data since each int comprise between 2-4 octet and one char is only 1
                            octet (=8 bits 0 or 1). I guess it will make the simulator run faster,
                            I'm not sure.
                            >
                            Do you mean that you have eight integers but that each one has either the
                            value 1 or 0? In that case, do:
                            >
                            Est-ce que vous-voulez dire que vous avez huite integers et que chaqun
                            d'entre eux a le valeur 1 ou 0? En ce cas, faitez:
                            >
                            int integers[8];
                            unsigned char character;
                            >
                            character= ( integers[0] ? (1 << 0) : 0 )
                            | ( integers[1] ? (1 << 1) : 0 )
                            | ( integers[2] ? (1 << 2) : 0 )
                            | ( integers[3] ? (1 << 3) : 0 )
                            | ( integers[4] ? (1 << 4) : 0 )
                            | ( integers[5] ? (1 << 5) : 0 )
                            | ( integers[6] ? (1 << 6) : 0 )
                            | ( integers[7] ? (1 << 7) : 0 );
                            >
                            Actually this works if the integers have the value 0 or non-0. If you
                            are certain that they can only be 1 or 0, the following may be faster:
                            >
                            Ceci marche si les integers ont les valeurs 0 ou non-0. Si vous etez
                            certain que ils n'ont que 1 ou 0, le ci-dessus peut-etre plus vite:
                            >
                            character= (integers[0] << 0)
                            | ( integers[1] << 1)
                            | ( integers[2] << 2)
                            | ( integers[3] << 3)
                            | ( integers[4] << 4)
                            | ( integers[5] << 5)
                            | ( integers[6] << 6)
                            | ( integers[7] << 7);
                            >
                            HTH
                            viza
                            Bonjour Viza,
                            Oui, je parle français aussi :-) merci beaucoup pour ton aide. Ton
                            programme me semble très intéressant, je vais essayer d'implementer ce
                            ci sur le simulateur. Merci beaucoup.
                            Anna

                            Comment

                            Working...