Unity项目字符串转ASCII二进制代码报错,求解决方法
Unity字符串转ASCII二进制代码错误修复
错误1:方法签名不匹配(CS1503)
Unity Button的onClick.AddListener只接受无参方法作为回调,但你的UpdateMatchNumber方法定义了string[] args参数,导致签名不兼容。
修复:
将UpdateMatchNumber的参数移除,改为无参方法:
void UpdateMatchNumber() { // 方法内容... }
错误2:ToString方法调用错误(CS1501)
你错误地调用了字符串类型的MatchNumber.ToString(b, 2),字符串的ToString方法没有接受两个参数的重载。正确的做法是将每个byte值转换为二进制字符串,应该使用Convert.ToString()方法处理单个byte。
修复:
替换MatchNumber.ToString(b, 2)为Convert.ToString(b, 2),确保对当前循环的byte进行二进制转换:
BinaryMatchNumber += Convert.ToString(b, 2).PadLeft(8, '0');
完整修正代码
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class Binary : MonoBehaviour { public string MatchNumber; public string BinaryMatchNumber; public TMP_InputField MatchNumberField; public Button Submit; void Start () { // 直接使用已赋值的Submit引用,无需重复GetComponent Submit.onClick.AddListener(UpdateMatchNumber); } void UpdateMatchNumber() { MatchNumber = MatchNumberField.text; // text本身就是字符串,无需额外ToString() byte[] asciiBytes = System.Text.Encoding.ASCII.GetBytes(MatchNumber); BinaryMatchNumber = ""; foreach (byte b in asciiBytes) { BinaryMatchNumber += Convert.ToString(b, 2).PadLeft(8, '0'); } Debug.Log(BinaryMatchNumber); } }
额外优化说明:
MatchNumberField.text本身就是字符串类型,不需要再调用.ToString()- 若已在Inspector中给
Submit赋值为Button组件,Start方法里无需重复调用GetComponent<Button>() - 方法内无需重新声明
string BinaryMatchNumber,直接使用类成员变量即可
内容的提问来源于stack exchange,提问作者Oliver Kolodner
相关产品推荐
相关产品推荐

