0

有人可以解释一下哈希码是如何工作的吗?我是安卓新手。我要做的就是获取用户输入的我的编辑文本的哈希码。

这是我的代码:

public class MainActivity extends Activity {
EditText txtCode, txtID;
Button enter;

@Override
        protected void onCreate(Bundle savedInstanceState) 
     super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


     txtID = (EditText) findViewById(R.id.txtid);
     txtCode = (EditText) findViewById(R.id.txtcode);
     enter = (Button) findViewById(R.id.button1);


         enter.setOnClickListener(new OnClickListener() 
            {

        @Override
        public void onClick(View v) 
        {
            // TODO Auto-generated method stub

            String a = txtID.getText().toString();
             int b = a.hashCode();
            txtCode.setText(b);
        }
    });
}
4

1 回答 1

6

你的代码是正确的。这就是您如何获取在文本框中输入的某些文本的哈希码。

(或者至少,如果有问题,不在代码的那个方面。)

也许你误解了hashcode. 此方法(由所有 Java 引用类型实现)返回一个int表示目标对象的简单 32 位散列的 :

  • 它不是加密哈希。加密哈希以另一种方式生成。哈希需要超过 32 位才能认为它是“强”的。
  • 它不是唯一的。哈希从来都不是唯一的。
  • 它甚至不是“可能是独一无二的”。如果您经常尝试,您很可能会看到与字符串的哈希值发生冲突。实际上,由于哈希是 32 位长,因此在尝试不同的字符串后,您肯定会看到至少一次冲突。2^32数学表明,你很可能比那更早发生碰撞。

我的代码实际上没有错误,但是当我点击进入时,我的模拟器总是强制关闭。

用于logcat查找导致“强制关闭”的原因。对于直接原因的异常,可能有一个带有堆栈跟踪的条目。如果您无法弄清楚堆栈跟踪的含义,请将其添加到您的问题...

于 2013-05-29T03:35:36.270 回答