此C语言中表达的意思的相当于C#中什么

名字委婉点 2014-04-02 01:25:10

unsigned char pData[4] ={0};
*pData,*(pData+1),*(pData+2),*(pData+3)





byte[] pData = new byte[4];
*pData?
*(pData+1)?
*(pData+2)?
*(pData+3)?

...全文
85 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
名字委婉点 2014-04-02
  • 打赏
  • 举报
回复
各位可否帮我看一下,我改的内容 C部分代码改C#代码

#include<stdio.h>
#include<string.h>
typedef unsigned long ULONG;
void rc4_init(unsigned char *s, unsigned char *key, unsigned long Len) //初始化函数
{
int i =0, j = 0;
unsigned char k[256] = {0};
unsigned char tmp = 0;
for(i=0;i<256;i++)
{
	k[i]=0x0;
}
for(i=0;i<256;i++)
{
s[i]=i;
k[i]=key[i%Len];
}
for (i=0; i<256; i++)
{
j=(j+s[i]+k[i])%256;
tmp = s[i];
s[i] = s[j]; //交换s[i]和s[j]
s[j] = tmp;
}
}
void rc4_crypt(unsigned char *s, unsigned char *Data, int Len) //加解密
{
int i = 0, j = 0, t = 0;
int k = 0;
unsigned char tmp;
for(k=0;k<Len;k++)
{
i=(i+1)%256;
j=(j+s[i])%256;
tmp = s[i];
s[i] = s[j]; //交换s[x]和s[y]
s[j] = tmp;
t=(s[i]+s[j])%256;
Data[k] ^= s[t];
}
}
int main()
{
	int j;
unsigned char s[256] = {0},s2[256] = {0}; //S-box
unsigned char key[256] ={0};
key[0] = 0x12;
key[1] = 0x34;
for(j=0;j<256;j++)
{
	printf("[%d] %d\n",j,key[j]);
}
unsigned char pData[4] ={0};
//char pData[512] = "这是一个用来加密的数据Data";
pData[0] = 0x64;
pData[1] = 0x63;
pData[2] = 0xf3;
pData[3] = 0x3f;
ULONG len = strlen((char*)pData);
printf("pData = %s  %d\n",pData,len);
printf("key = %s, length = %d\n\n",key,strlen((char *)key));
rc4_init(s,(unsigned char *)key,strlen((char *)key)); //已经完成了初始化
printf("完成对S[i]的初始化,如下:\n\n");
for (int i=0; i<256; i++)
{
printf("%x ",s[i]);
}
printf("\n\n");
for(i=0;i<256;i++)//用s2[i]暂时保留经过初始化的s[i],很重要的!!!
{
  s2[i]=s[i];
}
printf("已经初始化,现在加密:\n\n");
rc4_crypt(s,(unsigned char *)pData,len);//加密
printf("pData = %s       %d\n\n",pData,strlen((char*)pData));
printf("pData = %x %x %x %x\n\n",*pData,*(pData+1),*(pData+2),*(pData+3));
printf("已经加密,现在解密:\n\n");
rc4_init(s,(unsigned char *)key, strlen((char *)key)); //初始化密钥
rc4_crypt(s,(unsigned char *)pData,len);//解密
printf("pData = %s\n\n",pData);
return 0;
}


public void test()
        {
            byte[] s = new byte[256];
            byte[] s2 = new byte[256]; //S-box
            byte[] key = new byte[256];

            key[0] = 0x12;
            key[1] = 0x34;
            for (int j = 0; j < 256; j++)
            {
                // WriteLineEven("[%d] %d\n" + j.ToString() + "" + key[j].ToString());
                Console.WriteLine("[%d] %d\n", j.ToString(), key[j].ToString());
            }
            byte[] pData = new byte[4];
            //char pData[512] = "这是一个用来加密的数据Data";
            pData[0] = 0x64;
            pData[1] = 0x63;
            pData[2] = 0xf3;
            pData[3] = 0x3f;
            long len = pData.Length;
            Console.WriteLine("pData = %s  %d\n", pData, len);
            Console.WriteLine("key = %s, length = %d\n\n", key, key.Length);
            rc4_init(s, key, key.Length); //已经完成了初始化
            Console.WriteLine("完成对S[i]的初始化,如下:\n\n");
            for (int i = 0; i < 256; i++)
            {
                Console.WriteLine("%x ", s[i]);
            }
            Console.WriteLine("\n\n");
            for (int r = 0; r < 256; r++)//用s2[i]暂时保留经过初始化的s[i],很重要的!!!
            {
                s2[r] = s[r];
            }
            Console.WriteLine("已经初始化,现在加密:\n\n");
            rc4_crypt(s, pData, len);//加密
            Console.WriteLine("------------------------pData = %s       %d\n\n", pData, pData.Length);
            Console.WriteLine("----------pData = %x %x %x %x\n\n", pData[0].ToString(), pData[1].ToString(), pData[2].ToString(), pData[3].ToString());
            Console.WriteLine("已经加密,现在解密:\n\n");
            rc4_init(s, key, key.Length); //初始化密钥
            rc4_crypt(s, pData, len);//解密
            Console.WriteLine("pData = %s\n\n", pData);
            Console.ReadKey();
        }

        //初始化函数
        void rc4_init(byte[] s, byte[] key, long Len)
        {
            int j = 0;
            byte[] k = new byte[256];
            byte tmp = new byte();

            for (int i = 0; i < 256; i++)
            {
                k[i] = 0x0;
            }

            for (int q = 0; q < 256; q++)
            {
                s[q] = (byte)(q >> 8); //不能直接用int

                k[q] = key[q % Len];
            }

            for (int w = 0; w < 256; w++)
            {
                j = (j + s[w] + k[w]) % 256;
                tmp = s[w];
                s[w] = s[j]; //交换s[i]和s[j]
                s[j] = tmp;
            }
        }

        //加解密
        public static void rc4_crypt(byte[] s, byte[] Data, long Len)
        {
            int i = 0, j = 0, t = 0;
            byte tmp;
            for (int k = 0; k < Len; k++)
            {
                i = (i + 1) % 256;
                j = (j + s[i]) % 256;
                tmp = s[i];
                s[i] = s[j]; //交换s[x]和s[y]
                s[j] = tmp;
                t = (s[i] + s[j]) % 256;
                Data[k] ^= s[t];
            }
        }
cheng2005 2014-04-02
  • 打赏
  • 举报
回复
就是访问数组

2
3
4
5
 
byte[] pData = new byte[4];
*pData?
*(pData+1)?
*(pData+2)?
*(pData+3)?
 
相当于

byte[] pData = new byte[4];
pData [0]
pData [1]
pData [2]
pData [3]
名字委婉点 2014-04-02
  • 打赏
  • 举报
回复
引用 2 楼 tcmakebest 的回复:
相当于 pData[0], pData[1], pData[2], pData[3]
原来是这样,,,,,
tcmakebest 2014-04-02
  • 打赏
  • 举报
回复
相当于 pData[0], pData[1], pData[2], pData[3]
名字委婉点 2014-04-02
  • 打赏
  • 举报
回复


byte[] pData = new byte[4];
*pData?
*(pData+1)?
*(pData+2)?
*(pData+3)?

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧