我一直在尝试使用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();
}
}
答案 0 :(得分:0)
每次循环遍历新文本中的字符时,都会覆盖output.text。 当前您正在执行:
您应该使用 + = 运算符,但这将创建一个打印字符串 :
您应该为二进制值创建一个要添加到的字符串变量,然后在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')));