我必须将字节值发送到期待char *的C dll,这显然是不允许的。做了一些搜索,我应该用[MarshalAs(UnmanagedType.LPStr)]字符串myBytes替换char *
很好,但是我试图找出如何从字节数组中创建字符串的方式,即字符串中的每个字符都代表原始字节值,而不是十进制值的三位数字符串。例如如果我将0xFF转换为字符串,则最终得到的字符串为"255".
可能只是我起床太晚了(下午有午睡),但我无法将头缠住它。无论如何,这是我要整理的实际代码。
那么如何从两个字节(如0x84和0xB8)中选择合适的字符串呢?
很好,但是我试图找出如何从字节数组中创建字符串的方式,即字符串中的每个字符都代表原始字节值,而不是十进制值的三位数字符串。例如如果我将0xFF转换为字符串,则最终得到的字符串为"255".
可能只是我起床太晚了(下午有午睡),但我无法将头缠住它。无论如何,这是我要整理的实际代码。
C#:
[DllImport("libpigpiod_if.so", EntryPoint = "i2c_write_device")] //This is an example of how to call a method / function in a c library from c#
public static extern int i2c_write_device(uint handle, [MarshalAs(UnmanagedType.LPStr)] string buf, uint count);
The original C definition is
int i2c_read_device(unsigned handle, char *buf, unsigned count);
那么如何从两个字节(如0x84和0xB8)中选择合适的字符串呢?