繁体   English   中英

将ASCII字符数组转换为UNICODE字符串

[英]convert ASCII character array to UNICODE string

我正在c#中调用ac dll函数,该函数返回64位ASCII字符数组,因为c#使用UNICODE,我如何将ASCII字符数组转换为UNICODE字符串?

我之前通过将字符串包含在结构中来完成此操作,因为该函数将结构作为其参数之一,如下所示:

      public struct example
      {
        public uint ID;  
        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 64)]
        public string serialNumber;  
      }                  

这次我不能使用结构,因为此新函数将serialNumber作为其参数之一。 我已将serialNumber声明为字符串,然后在导入的c函数被调用时导致程序崩溃,我认为这是数据冲突的原因吗?

很抱歉,如果这个问题有点难以解释,请尽我所能解释我的问题。

您需要像这样使用System.Runtime.InteropServices.CharSet.Ansi

[StructLayout( LayoutKind.Sequential, CharSet = CharSet.Ansi )]
public struct example
{
    public uint ID;  
    [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst = 64)]
    public string serialNumber;  
}

您还可以将您的字符串声明为字节数组,并稍后使用进行转换:

myString = System.Text.Encoding.ASCII.GetString( byteArray );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM