Unity字符串与16进制的相互转化

由于 字符串存储过程中,用户输入的不确定性,导致解析时可能出现问题,所以采用字符串转化16进制的做法。

代码如下:

    /// <summary>
    /// 字符串转16进制
    /// </summary>
    /// <param name="input">要转格式的字符串</param>
    /// <returns>转化为16进制的字符串</returns>
    private string ToSixteen(string input)
    {
        char[] values = input.ToCharArray();
        string end = string.Empty;
        foreach (char letter in values)
        {
            int value = Convert.ToInt32(letter);
            string hexoutput = string.Format("{0:X}", value); //0 表示占位符 x或X表示十六进制
            end += hexoutput + "_";
        }
        end = end.Remove(end.Length - 1);
        return end;
    }
    /// <summary>
    /// 16进制转回字符串
    /// </summary>
    /// <param name="input">16进制</param>
    /// <returns>转回的字符串</returns>
    private string ToMyString(string input)
    {
        string[] hexvaluesplit = input.Split('_');
        string end = string.Empty;
        foreach (string hex in hexvaluesplit)
        {
            int value = Convert.ToInt32(hex, 16);
            string stringvalue = char.ConvertFromUtf32(value);
            char charValue = (char)value;
            end += charValue;
        }
        return end;
    }

返回目录

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Unity 本身不支持直接读取串口数据,需要使用第三方插件或自己编写插件来实现。 以下是使用自己编写的插件来读取串口 16 进制数据的示例: 1. 创建一个 C# 脚本,命名为 SerialPortManager.cs。 2. 在脚本中引入 System.IO.Ports 命名空间和 Unity 的命名空间。 ```csharp using System.IO.Ports; using UnityEngine; ``` 3. 在脚本中创建一个 SerialPort 类型的变量,用于连接串口。 ```csharp private SerialPort serialPort; ``` 4. 在 Awake() 方法中初始化串口连接,设置串口参数。 ```csharp void Awake() { serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One); serialPort.Open(); serialPort.ReadTimeout = 1000; } ``` 5. 在 Update() 方法中读取串口数据。 ```csharp void Update() { if (serialPort.IsOpen) { try { string hexString = serialPort.ReadExisting(); byte[] bytes = StringToByteArray(hexString); // 处理接收到的数据 } catch (System.Exception e) { Debug.LogWarning(e.Message); } } } ``` 6. 创建一个 StringToByteArray() 方法,用于将 16 进制字符串转换为字节数组。 ```csharp private byte[] StringToByteArray(string hexString) { hexString = hexString.Replace(" ", ""); byte[] bytes = new byte[hexString.Length / 2]; for (int i = 0; i < hexString.Length; i += 2) { bytes[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16); } return bytes; } ``` 使用以上方法,就可以实现在 Unity 中读取串口 16 进制数据了。注意需要在项目设置中开启串口权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

末零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值