x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 251

# How to combine two 8bits binary become 16bit binary

import java.io.*;
import java.math.*;

class test {

static PrintWriter screen = new PrintWriter(System.out, true);

public static void main(String[] args) throws IOException {

String str;
char[] charArray;
String[] subs;
int[] q;

screen.println("Try System");
screen.println("Enter a sentences");
screen.println();
//str = str.toLowerCase();
char[] array = new char [str.length()];
StringBuffer buf = new StringBuffer();
int dis = 1 << 7;

for ( int i = 0; i < str.length(); i++ ) {

array[i] = str.charAt(i);

for (int sh = 1; sh <= 8; sh++) {

buf.append(( array[i] & dis ) == 0 ? '0' : '1');
array[i] <<= 1;
}
}
String s = buf.toString();
System.out.println(s);
}

// what i want is somethin like this
01010011 01100101 01100011 01110010 01100101 01110100 00100001
and taking 8 bit numbers and representing then side by side as one 16 bit number. In this example, there are
7 original characters (Secret!) that from 4 blocks:
0101001101100101   0110001101110010   0110010101110100   0000000000100001
NOTE that the last character is padded with zeros
0
lskoong
• 2
1 Solution

Commented:
What is the question?
0

Analyst ProgrammerCommented:
import java.io.*;
import java.math.*;

class test {

static PrintWriter screen = new PrintWriter(System.out, true);

public static void main(String[] args) throws IOException {

String str;
char[] charArray;
String[] subs;
int[] q;

screen.println("Try System");
screen.println("Enter a sentences");
screen.println();
//str = str.toLowerCase();
char[] array = new char [str.length()];
StringBuffer buf = new StringBuffer();
int dis = 1 << 7;

for ( int i = 0; i < str.length(); i++ ) {

if (str.length() % 2 == 1) {
for (int sh1=1; sh1<=8; sh1++)
buf.append('0');
}

array[i] = str.charAt(i);

for (int sh = 1; sh <= 8; sh++) {

buf.append(( array[i] & dis ) == 0 ? '0' : '1');
array[i] <<= 1;
}

i++;

if (i < str.length()) {
array[i] = str.charAt(i);

for (int sh2 = 1; sh2 <= 8; sh2++) {

buf.append(( array[i] & dis ) == 0 ? '0' : '1');
array[i] <<= 1;
}
}

buf.append(' '); // added for debug
}
String s = buf.toString();
System.out.println(s);
}
}
0

Commented:
if you have this method:
public static String getBinaryString(byte b) {
int dis = 1 << 7;
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 8; i++) {
buf.append((b&dis)==0?'0':'1');
b <<= 1;
}
return buf.toString();
}

you can extract the bites of the char in this way:
char ch = 'a';
System.out.println(
getBinaryString((byte)(ch & 0x00ff)) + " " + getBinaryString((byte)(ch >> 8)));
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

## Featured Post

• 2
Tackle projects and never again get stuck behind a technical roadblock.