[英]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.