Unity字符串到二进制转换器输出错误

时间:2018-08-01 13:06:32

标签: c# unity3d

我一直在尝试使用C#统一为二进制转换器创建一个简单的字符串。代码可以很好地转换它,但是我得到的问题是,在输出时,输出仅是最后一个键入的字母。 例如,输入“ 你好”时,我希望它显示

01001000 01100101 01101100 01101100 01101111

但是我只能得到 o 转换,即01101111

这是我在统一c#中的代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TextInput : MonoBehaviour
{
    InputField textInput;
    InputField.SubmitEvent se;
    public Text output;

    // Use this for initialization
    void Start()
    {
        textInput = gameObject.GetComponent<InputField>();
        se = new InputField.SubmitEvent();
        se.AddListener(SubmitInput);
        textInput.onEndEdit = se;
    }

    private void SubmitInput(string arg0)
    {
        string currentText = output.text;
        string newtext = currentText + "\n" + arg0;

        foreach (char c in newtext)
            output.text = newtext + " in binary is " + "\n" + (Convert.ToString(c, 2).PadLeft(8, '0'));

        textInput.text = "";

        textInput.ActivateInputField();
    }
}

3 个答案:

答案 0 :(得分:0)

每次循环遍历新文本中的字符时,都会覆盖output.text。 当前您正在执行:

  • output.text = newtext +“以二进制形式表示”是“ +二进制事物1
  • output.text = newtext +“以二进制形式表示”是“ +二进制事物2”

您应该使用 + = 运算符,但这将创建一个打印字符串 :

  • 二进制形式的Hello是“ h的值”二进制形式的Hello是“ e的值” 等

您应该为二进制值创建一个要添加到的字符串变量,然后在foreach循环的 之后将其添加到output.text。

private void SubmitInput(string arg0)
{

    string currentText = output.text;
    string newtext = currentText + "\n" + arg0;

    string binaryText; //This string will contain the Binary Data

    foreach (char c in newtext)
        {
        binaryText += (Convert.ToString(c, 2).PadLeft(8, '0')); //Add that character's binary data to the binary string
        }

    output.text = newtext + " in binary is " + "\n" + binaryText;//Print the binary string after the speicifed text

    textInput.text = "";

    textInput.ActivateInputField();

}

答案 1 :(得分:0)

您好,您的代码对我来说正常工作,您正在覆盖数据使用:output.text +=

还要验证您的文本字段是多行还是尝试删除 \n

“文本”组件中的BestFit选项还可以帮助改善可视化效果

答案 2 :(得分:0)

要获得所需的输出,请如下更改代码:

string binaryText = "";
foreach (char c in newtext)
    binaryText += (Convert.ToString(c, 2).PadLeft(8, '0')) + " ";

output.text = newtext + " in binary is " + "\n" + binaryText;

如果您使用LINQ,可以对其进行简化:

var binaryText = string.Join(" ", newtext.ToList().Select(x => Convert.ToString(x, 2).PadLeft(8, '0')));