首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c++函数转c#时参数处置的难题

2012-09-19 
c++函数转c#时参数处理的难题有如下c++写的函数C/C++ codevoid convert(unsigned char A, char *a){a[0](

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(); 

热点排行