Java 如何将字符转换为二进制?
我是一名android自学者。我想将字符转换为相应的二进制。例如,我给字符“A”(其ASCII为65,二进制为1000001),我想得到的答案为1000001。 提前谢谢 这是我的密码Java 如何将字符转换为二进制?,java,android,Java,Android,我是一名android自学者。我想将字符转换为相应的二进制。例如,我给字符“A”(其ASCII为65,二进制为1000001),我想得到的答案为1000001。 提前谢谢 这是我的密码 import android.app.AlertDialog; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Sna
import android.app.AlertDialog;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Stack;
public class MainActivity extends AppCompatActivity implements TextWatcher,View.OnClickListener
{
EditText txtDecimal;
TextView txtBinary;
Button btnAbout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtDecimal=(EditText)findViewById(R.id.txtDecimal);
txtBinary=(TextView)findViewById(R.id.txtval2);
//txtdec=(TextView)findViewById(R.id.txtDecimal);
txtDecimal.addTextChangedListener(this);
btnAbout=(Button)findViewById(R.id.button1);
btnAbout.setOnClickListener(this);
}
public void beforeTextChanged(CharSequence sequence,int start,int count,int after)
{
}
public void afterTextChanged(Editable editable)
{
}
public void onTextChanged(CharSequence sequence,int start,int before,int count) {
calculate(2, txtBinary); // for base 2 (binary)
}
public void calculate(int base,TextView txtView)
{
if(txtDecimal.getText().toString().trim().length()==0)
{
txtView.setText("");
return;
}
try
{
Stack<Object> stack=new Stack<Object>();
int number=Integer.parseInt(txtDecimal.getText().toString());
while (number>0)
{
int remainder=number%base; // find remainder
if(remainder<10)
// for remainder smaller than 10
{
stack.push(remainder);
// push remainder in stack
}
number/=base;
}
StringBuffer buffer=new StringBuffer();
while (!stack.isEmpty())
{
buffer.append(stack.pop().toString());
}
txtView.setText(buffer.toString());
}
catch (Exception e)
{
txtView.setText(e.getMessage());
}
}
public void onClick(View view)
// to display Information in a dialog box
{
// create a dialog box
AlertDialog.Builder builder=new AlertDialog.Builder(this);
// to allow cancelling the dialog box
builder.setCancelable(true);
// set title
builder.setTitle("About NumberSystemConverter");
// set message
builder.setMessage("Made by HARI");
// display dialog box
builder.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
导入android.app.AlertDialog;
导入android.os.Bundle;
导入android.support.design.widget.FloatingActionButton;
导入android.support.design.widget.Snackbar;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.view.view;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入java.util.Stack;
公共类MainActivity扩展AppCompatActivity实现TextWatcher、View.OnClickListener
{
编辑文本txtDecimal;
TextView txtBinary;
按钮btnAbout;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtDecimal=(EditText)findViewById(R.id.txtDecimal);
txtBinary=(TextView)findViewById(R.id.txtval2);
//txtdec=(TextView)findViewById(R.id.txtDecimal);
txtDecimal.addTextChangedListener(此);
btnAbout=(按钮)findViewById(R.id.button1);
btnAbout.setOnClickListener(这个);
}
public void beforeTextChanged(字符序列、int start、int count、int after)
{
}
public void PostTextChanged(可编辑)
{
}
public void onTextChanged(字符序列、int start、int before、int count){
计算(2,txtBinary);//对于基2(二进制)
}
公共void计算(int-base,TextView-txtView)
{
if(txtDecimal.getText().toString().trim().length()==0)
{
txtView.setText(“”);
返回;
}
尝试
{
堆栈=新堆栈();
int number=Integer.parseInt(txtDecimal.getText().toString());
而(数量>0)
{
整数余数=数字%base;//查找余数
如果(余数尝试如下
String s = txtDecimal.getText().toString();
String binary_num ="";
StringBuilder sb = new StringBuilder();
String ascString = null;
long asciiInt;
for (int i = 0; i < s.length(); i++){
sb.append((int)s.charAt(i));
char c = s.charAt(i);
}
ascString = sb.toString();
asciiInt = Long.parseLong(ascString);
ascii_number =(int) intasciiInt;
int binary[] = new int[ascii_number];
int index = 0;
while(ascii_number > 0){
binary[index++] = ascii_number%2;
ascii_number = ascii_number/2;
}
for(int i = index-1;i >= 0;i--){
binary_num = binary_num + binary[i];
}
txtBinary.setText(binary_num);
String s=txtDecimal.getText().toString();
字符串二进制_num=“”;
StringBuilder sb=新的StringBuilder();
字符串ascString=null;
长腹水;
对于(int i=0;i0){
二进制[index++]=ascii_编号%2;
ascii_编号=ascii_编号/2;
}
对于(int i=index-1;i>=0;i--){
二进制数=二进制数+二进制数[i];
}
setText(binary_num);
尝试以下操作
String s = txtDecimal.getText().toString();
String binary_num ="";
StringBuilder sb = new StringBuilder();
String ascString = null;
long asciiInt;
for (int i = 0; i < s.length(); i++){
sb.append((int)s.charAt(i));
char c = s.charAt(i);
}
ascString = sb.toString();
asciiInt = Long.parseLong(ascString);
ascii_number =(int) intasciiInt;
int binary[] = new int[ascii_number];
int index = 0;
while(ascii_number > 0){
binary[index++] = ascii_number%2;
ascii_number = ascii_number/2;
}
for(int i = index-1;i >= 0;i--){
binary_num = binary_num + binary[i];
}
txtBinary.setText(binary_num);
String s=txtDecimal.getText().toString();
字符串二进制_num=“”;
StringBuilder sb=新的StringBuilder();
字符串ascString=null;
长腹水;
对于(int i=0;i0){
二进制[index++]=ascii_编号%2;
ascii_编号=ascii_编号/2;
}
对于(int i=index-1;i>=0;i--){
二进制数=二进制数+二进制数[i];
}
setText(binary_num);
通过这个代码,我只能转换数字
这是不正确的。该代码还可以将字符转换为“二进制”。只需替换:
int number=Integer.parseInt(txtDecimal.getText().toString());
与
它会改变它
话虽如此,您的代码根本没有转换为二进制。它实际上是转换为一个以字符串表示的以2为基数的数字序列。如果使用calculate)且base`大于10,则该字符串将无法解码为以N为基数的数字
通过这个代码,我只能转换数字
这是不正确的。该代码还可以将字符转换为“二进制”。只需替换:
int number=Integer.parseInt(txtDecimal.getText().toString());
与
它会改变它
话虽如此,您的代码根本没有转换为二进制。它实际上是转换为一个以字符串表示的以2为基数的数字序列。如果您使用calculate)且base`大于10,则该字符串将无法解码为以N为基数的数字。您的问题是什么?@njzk2,他想将字符转换为二进制字符串。Integer.parseInt(txtDecimal.getText().toString())
要求输入为整数。即使这样,它也会转换整数值,而不是数字字符编码表示的值。您需要单独处理每个字符,并从获取每个字符的整数值开始。将字符转换为ascii您可以使用int ascii=(int)你的问题是什么?@njzk2,他想把字符转换成二进制字符串。Integer.parseInt(txtDecimal.getText().toString())
要求输入为整数。即使这样,它也会转换整数值,而不是数字字符编码表示的值。您需要单独处理每个字符,并从获取每个字符的整数值开始。将字符转换为ascii您可以使用int ascii=(int)字符;和asccii到二进制请现在检查。数字转换也可以使用上述代码。我想将字符转换为ASCII。Plz helpascii_Number=asciiInt;显示错误。。。。。。。。