c++函数转c#时参数处理的难题
有如下c++写的函数
- C/C++ code
void convert(unsigned char A, char *a){ a[0]=(A&128)>>7; a[1]=(A&64)>>6; a[2]=(A&32)>>5; a[3]=(A&16)>>4; a[4]=(A&8)>>3; a[5]=(A&4)>>2; a[6]=(A&2)>>1; a[7]=(A&1);}char * a = new char[32];//调用 convert(pin[j],&a[j*8]);
在C#中 一般的参数我都把convert函数这么处理:
- C# code
public static void convert(byte A, string[] a) { a[0] = ((A & 128) >> 7).ToString(); a[1] = ((A & 64) >> 6).ToString(); a[2] = ((A & 32) >> 5).ToString(); a[3] = ((A & 16) >> 4).ToString(); a[4] = ((A & 8) >> 3).ToString(); a[5] = ((A & 4) >> 2).ToString(); a[6] = ((A & 2) >> 1).ToString(); a[7] = ((A & 1)).ToString(); }
但是出现 convert(pin[j],&a[j*8]); 有&a[j*8]这个引用我就不知道怎么处理了,如果函数改写成
- C# code
public static void convert(byte A, ref sbyte a){ a[0] = ((A & 128) >> 7);}
会报索引器错误,求高人指点啊,先谢过大家了
[解决办法]
增加一个参数,把起始索引传过去
这个参数可以给一个默认值
- C# code
public static void convert(byte A, string[] a,int startIndex=0){ a[startIndex]=...; a[startIndex+1]=...;…… ……
[解决办法]
不知道楼主你咋学的C++,char *到了C#里面竟然变成了string[],要不就是sbyte,还能再雷人点不??
居然还用到了 ToString()
- C# code
a[0] = ((A & 128) >> 7).ToString();