我的C#代码使用托管C++包装器.要创建这个Wrapper类型的新对象,我需要将String转换为Sbyte*.一些StackOverflow.com帖子讨论了如何将String转换为byte [],以及将byte []转换为sbyte [],而不是String转换为sbyte*.
msdn.social.com提供有关如何将字节数组转换为字符串的建议:
> // convert String to Sbyte*
> string str = "The quick brown, fox jumped over the gentleman.";
>
> System.Text.ASCIIEncoding encoding = new
> System.Text.ASCIIEncoding();
>
> Byte[] bytes = encoding.GetBytes(str);
Run Code Online (Sandbox Code Playgroud)
但是,"bytes"不是sbyte*类型.我以下尝试将字节转换为sbyte*失败:
Run Code Online (Sandbox Code Playgroud)1. Convert.ToSbyte(bytes); 2. cast: (sbyte*) bytes;
请告诉我如何将C#字符串转换为sbyte*.
另外,请谈谈介绍sbyte*的任何副作用,我认为这是不安全的代码.
谢谢,凯文
Cip*_*ipi 17
嗯,这样的事情怎么样:
(没有测试它,不给我-1如果它不起作用,我只是相信它应该):))
string str = "The quick brown fox jumped over the gentleman.";
byte[] bytes = Encoding.ASCII.GetBytes(str);
unsafe
{
fixed (byte* p = bytes)
{
sbyte* sp = (sbyte*)p;
//SP is now what you want
}
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
sbyte[] sbytes = Array.ConvertAll(bytes, q => Convert.ToSByte(q));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15195 次 |
| 最近记录: |