All I want is to go from 'a' to 0110 0001
Asked
Active
Viewed 3.2k times
7
-
Please be more specific. – idursun Apr 22 '11 at 07:36
-
2Do you mean that you want to display eight characters '0110 0001' instead of 'a' ? – pavium Apr 22 '11 at 07:39
5 Answers
7
if you write int i = 'a';
you get you want since all numbers physically are base 2. But if it's needed to get a string with ones and zeros then here is an example
/* itoa example */
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i = 'a';
char buffer [33]; //the variable you will store i's new value (binary value) in
_itoa_s(i,buffer,2);
printf ("binary: %s\n",buffer);
return 0;
}

Learning Equals Success
- 185
- 2
- 15

Andrey Sboev
- 7,454
- 1
- 20
- 37
-
6Note that `itoa()` isn't standard. There is no standard function to get a binary representation of an integer. – AProgrammer Apr 22 '11 at 07:56
1
#include <cmath>
#include <iostream>
#include <string>
#include <cstring>
#include <cctype>
#include <cstdlib>
using namespace std;
char* toBinary(char* doubleDigit)
{
int digit = atoi(doubleDigit);
char* binary = new char();
int x = 0 ;
for(int i = 9 ; digit != 0; i--)
{
//cout << "i"<< i<<endl;
if(digit-pow(2,i)>=0)
{
digit = digit- pow(2,i);
binary[x]= '2';
binary[x+1]='^';
binary[x+2]=i+'0';
binary[x+3]= '+';
x+=4;
}
}
return binary;
}
int main()
{
char value[3]={'8','2','0'};
cout<< toBinary(value);
return 0 ;
}`enter code here`

Jacques
- 11
- 1
1
I may write an own one: Just be careful!
enum
{
O32_LITTLE_ENDIAN = 0x03020100ul,
O32_BIG_ENDIAN = 0x00010203ul,
O32_PDP_ENDIAN = 0x01000302ul
};
static const union { unsigned char bytes[4]; uint32_t value; } o32_host_order =
{ { 0, 1, 2, 3 } };
#define O32_HOST_ORDER (o32_host_order.value)
template <class T> ostream & operator << ( ostream &os, const T &value )
{
size_t i = sizeof(T);
const char * val = "01";
const unsigned char * addr = reinterpret_cast<const unsigned char *>(&value);
// x86
#if ( O32_HOST_ORDER == O32_LITTLE_ENDIAN )
while ( i > 0 )
{
--i;
os << val[bool(addr[i] & 128)];
os << val[bool(addr[i] & 64)];
os << val[bool(addr[i] & 32)];
os << val[bool(addr[i] & 16)];
os << val[bool(addr[i] & 8)];
os << val[bool(addr[i] & 4)];
os << val[bool(addr[i] & 2)];
os << val[bool(addr[i] & 1)];
}
// PowerPC
#else
size_t j = 0;
while ( j < i )
{
os << val[bool(addr[j] & 128)];
os << val[bool(addr[j] & 64)];
os << val[bool(addr[j] & 32)];
os << val[bool(addr[j] & 16)];
os << val[bool(addr[j] & 8)];
os << val[bool(addr[j] & 4)];
os << val[bool(addr[j] & 2)];
os << val[bool(addr[j] & 1)];
++j;
}
#endif
return os;
}
Big endian testing: link.
-
2
-
I was joking actually... ummm, sorry... `'0' + bool(addr[i] & N)` is probably faster, and a touch less hacky too... :-). +1 anyway. – Tony Delroy Apr 22 '11 at 09:16
0
#include "global.h"
#include <iostream>
using namespace std;
void binaryConvert(int number);
static int n=0;
char cipher[256]; // cipher text
void binaryConvert(int number) {
while (number > 0) {
int bin = number % 2;
number /= 2;
cipher[n] = bin;
}
}
int main(){
char c;
int val=0;
char buff[9];
for (int i = 0; i < 8; i++)
{
cin >> c;
val = static_cast<int>(c);
binaryConvert(val);
}
}

max jack
- 1
-
Can you please give more specific details to what your code example does? – Bender Bending Aug 04 '17 at 15:53
0
Here is a more flexible function you can use:
#include <iostream>
#include <string>
#include <bitset>
std::string ASCIITextToBinaryText(const std::string& text, const unsigned int blockSize = 8, const std::string& separator = " ")
{
std::string binaryText(""), block;
std::bitset<8U> asciiCharToBinary;
for (unsigned int i = 0; i < text.length(); i++)
{
asciiCharToBinary = text[i];
block += asciiCharToBinary.to_string();
while (block.length() > blockSize)
{
binaryText += block.substr(0, blockSize);
binaryText += separator;
block = block.substr(blockSize, block.length() - blockSize);
}
}
if (block.length() != 0)
{
binaryText += block;
}
return binaryText;
}
int main()
{
//your example is a binary text with blocks of 4 bits and " " between blocks, like this:
std::cout << ASCIITextToBinaryText("a", 4, " ") << std::endl;
//another example can be blocks of 8 bits and as a block separator " "
std::cout << ASCIITextToBinaryText("example", 8, " ") << std::endl;
//13 bits blocks and "akdn213" block separator
std::cout << ASCIITextToBinaryText("Hello World!", 13, "akdn213");
}

Claudiu HBann
- 56
- 1
- 9
-
Would be more helpful to the poster if you added comments or explained how your code works. It's also kind of unclear how the poster is supposed to call the code. – elrobe Jul 30 '21 at 14:02
-
Idk man, seems obvious to me how he would call the function and the code is not that hard to understand... Let me adjust. – Claudiu HBann Jul 30 '21 at 14:11