Android二进制转换器麻烦

时间:2011-04-15 05:24:09

标签: java android textview

您好  我刚刚完成了我的第一个应用程序,我遇到了一个小问题,至少说它完全符合正常但是当我按下回车并点击文本到二进制时它变得疯狂我把问题缩小到了

textview1.setText(binary);

如果我的代码有点草率,那么任何帮助都会受到赞赏和抱歉,这是我需要处理的很多事情之一。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;

public class Binary extends Activity {

    Button b1 ;
    EditText edittext;
    RadioButton rad1, rad2;
    TextView textview1 ;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        edittext = (EditText) findViewById(R.id.edittext);
        rad1 = (RadioButton) findViewById(R.id.rad1);
        rad2 = (RadioButton) findViewById(R.id.rad2);
           }


    public void onClick(View v) 
    {
        if(rad1.isChecked())
           {
               String s1 = edittext.getText().toString();
               byte[] bytes = s1.getBytes();
               StringBuilder binary = new StringBuilder();
               for (byte b : bytes)
                  {
                     int val = b;
                     for (int i = 0; i < 8; i++)
                     {
                        binary.append((val & 128) == 0 ? 0 : 1);
                        val <<= 1;
                     }
                     binary.append(' ');
                  }

                textview1.setText(binary);


            }
        }
    }

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget92"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<EditText
android:id="@+id/edittext"
android:layout_width="264px"
android:layout_height="57px"
android:textSize="18sp"
android:autoText="true"
android:layout_x="30px"
android:layout_y="36px"
>
</EditText>
<RadioGroup
android:id="@+id/rg1"
android:layout_width="260px"
android:layout_height="42px"
android:orientation="horizontal"
android:layout_x="33px"
android:layout_y="116px"
>
<RadioButton
android:id="@+id/rad1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text to Binary"
>
</RadioButton>
<RadioButton
android:id="@+id/rad2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Binary to Text"
>
</RadioButton>
</RadioGroup>
<Button
android:id="@+id/b1"
android:layout_width="142px"
android:layout_height="55px"
android:text="Enter"
android:textSize="20sp"
android:textStyle="bold"
android:layout_x="85px"
android:layout_y="208px"
android:onClick="onClick"
>
</Button>
<TextView
android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="20sp"
android:layout_x="115px"
android:layout_y="288px"
>
</TextView>
</AbsoluteLayout>

1 个答案:

答案 0 :(得分:0)

int val = b;

应该是

int val = b - '0'; // Character.getNumericValue(b);

注意0的ASCII值为48(十进制)。因此09将为4857。所以你需要从48到57(含)之间的字节中减去48,即'0'