You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:07:32