这种题目的特点就是看起来比较简单, 但是处理的时候却没那么简单. 这次呢, 我打算用 c 进行转换, 用 android 来处理界面, 让这个 c 语言入门的题目有个可视化的显示. 好啦, 开工吧!
关于如何使用 c 语言, 可以查看我之前的文章 AndroidStudio 使用. so 你该会这两步
布置下界面, 代码我就不贴了, 很简单了.
布置下界面
贴一下转换的核心代码, 源码见最后.
- //4.开始转换
- unsigned char cH,
- cL;
- int i;
- for (i = 0; i < cLen; i++) {
- //4.1 获取高低位
- cH = cStr[i] >> 4;
- cL = cStr[i] & 0x0f;
- //4.2 转换为16进制
- if (cH > 9) {
- cH = cH + 'A' - 10;
- } else {
- cH = cH | 0x30;
- }
- if (cL > 9) {
- cL = cL + 'A' - 10;
- } else {
- cL = cL | 0x30;
- }
- //4.3 存储高低位到缓存串
- cBuf[i * 2] = cH;
- cBuf[i * 2 + 1] = cL;
- }
然后在点击事件中处理转换后的串
- public void StrToHex(View v) {
- //1.获取控件
- EditText et_ascii_str = (EditText) findViewById(R.id.et_ascii_str);
- TextView tv_hex_str = (TextView) findViewById(R.id.tv_hex_str);
- //2.获取输入串并转换
- String input_str = et_ascii_str.getText().toString();
- String hexStr = new SToH().StrToHexC(input_str);
- //3.对返回串处理, 帮助查看
- char[] hexCharArray = hexStr.toCharArray();
- String hexDisplayStr = "";
- for (int i = 0; i < hexCharArray.length; i++) {
- if (i % 2 == 0 && i > 0 && i % 8 != 0) {
- hexDisplayStr += "-";
- }
- if (i % 8 == 0 && i > 0) {
- hexDisplayStr += " ";
- }
- hexDisplayStr += hexCharArray[i];
- }
- //4.显示处理后的结果
- tv_hex_str.setText(hexDisplayStr);
- }
行了, 看一下实际的效果
实际演示
来源: http://www.jianshu.com/p/88e61ae60288