除了正常进制转换,还可以输入、输出使用不同的数字符号,达成对数值进行加密的效果
点我下载APK安装包提取码:h4nw
使用unity开发。新建一个c#代码文件,把代码覆盖进去,再把代码文件添加给main camera即可。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class NewBehaviourScript : MonoBehaviour
{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){}string injinzhifuhao = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";string injinzhi = @"10";string intext = @"12345";string outjinzhifuhao = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";string outjinzhi1 = @"2";string outtext1 = @"";private void OnGUI(){float rect_x = Screen.width * 0.1f;float rect_y = Screen.height * 0.1f;float rect_w = Screen.width * 0.8f;float rect_h = Screen.height * 0.05f;GUIStyle style_l = GUI.skin.label;style_l.normal.textColor = Color.white;style_l.fontSize = (int)(rect_h * 0.8);style_l.alignment = TextAnchor.MiddleCenter;GUIStyle style_t = GUI.skin.textField;style_t.normal.textColor = Color.white;style_t.fontSize = (int)(rect_h * 0.8);GUIStyle style_b = GUI.skin.button;style_b.fontSize = (int)(rect_h * 0.8);style_b.alignment = TextAnchor.MiddleCenter;GUI.Label(new Rect(rect_x, rect_y, rect_w, rect_h), @"进制符号", style_l);rect_y += rect_h;injinzhifuhao = GUI.TextField(new Rect(rect_x, rect_y, rect_w, rect_h), injinzhifuhao, style_t);rect_y += rect_h;GUI.Label(new Rect(rect_x, rect_y, rect_w, rect_h), @"输入的是几进制", style_l);rect_y += rect_h;injinzhi = GUI.TextField(new Rect(rect_x, rect_y, rect_w, rect_h), injinzhi, style_t);rect_y += rect_h;GUI.Label(new Rect(rect_x, rect_y, rect_w, rect_h), @"数值", style_l);rect_y += rect_h;intext = GUI.TextField(new Rect(rect_x, rect_y, rect_w, rect_h), intext, style_t);rect_y += rect_h * 2;bool butt = GUI.Button(new Rect(rect_x, rect_y, rect_w, rect_h), @"转换", style_b);rect_y += rect_h * 2;GUI.Label(new Rect(rect_x, rect_y, rect_w, rect_h), @"转换后的进制符号", style_l);rect_y += rect_h;outjinzhifuhao = GUI.TextField(new Rect(rect_x, rect_y, rect_w, rect_h), outjinzhifuhao, style_t);rect_y += rect_h;GUI.Label(new Rect(rect_x, rect_y, rect_w, rect_h), @"转换成几进制", style_l);rect_y += rect_h;outjinzhi1 = GUI.TextField(new Rect(rect_x, rect_y, rect_w, rect_h), outjinzhi1, style_t);rect_y += rect_h;GUI.Label(new Rect(rect_x, rect_y, rect_w, rect_h), @"数值", style_l);rect_y += rect_h;outtext1 = GUI.TextField(new Rect(rect_x, rect_y, rect_w, rect_h), outtext1, style_t);if (butt){int injinzhi_;int outjinzhi1_;// - - - - - - - - - - - - - - - 纠错 - - - - - - - - - - - - - - - if (injinzhifuhao.Length <= 0) { injinzhifuhao = @"不能没有进制符号"; return; }if (int.TryParse(injinzhi, out injinzhi_) == false) { injinzhi = @"无法识别为数字" + injinzhi; return; }if (injinzhi_ <= 0) { injinzhi = @"必须是大于零的数字" + injinzhi; return; }if (int.TryParse(outjinzhi1, out outjinzhi1_) == false) { outjinzhi1 = @"无法识别为数字" + outjinzhi1; return; }if (outjinzhi1_ <= 0) { outjinzhi1 = @"必须是大于零的数字" + outjinzhi1; return; }if (injinzhi_ > injinzhifuhao.Length) { injinzhi = @"进制符号太少,无法表示如此大的进制" + injinzhi; return; }foreach (var item in intext){bool t = false;for (int i = 0; i < injinzhi_; i++){if (injinzhifuhao[i] == item) { t = true; break; }}if (t == false) { intext = @"符号" + item + "不在进制范围的符号中" + intext; return; }}// - - - - - - - - - - - - - - - 转换 - - - - - - - - - - - - - - - // 用int[]保存intext的每个数字;int[]的元素数量是intext.Length。int[] jinzhinum = new int[intext.Length];for (int i = 0; i < intext.Length; i++){for (int j = 0; j < injinzhifuhao.Length; j++){if (intext[i] == injinzhifuhao[j]){jinzhinum[i] = j;}}}// 对输入值减一,同时输出值加一。List<int> outnum = new List<int>();outnum.Add(0);while (SubOne(ref jinzhinum, injinzhi_)){AddOne(ref outnum, outjinzhi1_);}// 数字转换成符号outtext1 = @"";for (int i = outnum.Count - 1; i >= 0; i--){int t = outnum[i];string tt = outjinzhifuhao[t].ToString();outtext1 = tt + outtext1;}}bool SubOne(ref int[] a, int jinzhi){if (a[a.Length - 1] > 0) // 个位数减一{a[a.Length - 1]--;return true;}else // 需要借位{for (int i = a.Length - 2; i >= 0; i--){if (a[i] > 0){a[i]--;for (int j = i + 1; j <= a.Length - 1; j++){a[j] = jinzhi - 1;}return true;}}return false; // 传入的数为零,无法继续减一}}void AddOne(ref List<int> a, int jinzhi){a[a.Count - 1]++;for (int i = a.Count - 1; i >= 0; i--){if (a[i] == jinzhi){a[i] = 0;if (i != 0){a[i - 1]++;}else{a.Insert(0, 1);return;}}else{return;}}}}
}