将C函数转换为C#
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将C函数转换为C#,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1951字,纯文字阅读大概需要3分钟。
内容图文
![将C函数转换为C#](/upload/InfoBanner/zyjiaocheng/823/dee3df3ab06f4f6290db4079b03838e4.jpg)
我试图将以下C函数移植到C#:
QString Engine::FDigest(const QString & input)
{
if(input.size() != 32) return "";
int idx[] = {0xe, 0x3, 0x6, 0x8, 0x2},
mul[] = {2, 2, 5, 4, 3},
add[] = {0x0, 0xd, 0x10, 0xb, 0x5},
a, m, i, t, v;
QString b;
char tmp[2] = { 0, 0 };
for(int j = 0; j <= 4; j++)
{
a = add[j];
m = mul[j];
i = idx[j];
tmp[0] = input[i].toAscii();
t = a + (int)(strtol(tmp, NULL, 16));
v = (int)(strtol(input.mid(t, 2).toLocal8Bit(), NULL, 16));
snprintf(tmp, 2, "%x", (v * m) % 0x10);
b += tmp;
}
return b;
}
有些代码很容易移植但是我遇到了这个部分的问题:
tmp[0] = input[i].toAscii();
t = a + (int)(strtol(tmp, NULL, 16));
v = (int)(strtol(input.mid(t, 2).toLocal8Bit(), NULL, 16));
snprintf(tmp, 2, "%x", (v * m) % 0x10);
我发现(int)strtol(tmp,NULL,16)等于C#中的int.Parse(tmp,“x”),而snprintf是String.Format,但是我不确定其余部分.
如何将此片段移植到C#?
解决方法:
编辑我怀疑你的代码实际上是输入数据的MD5摘要.
请参阅下面的基于该假设的代码段.
翻译步骤
一些应该运作良好的提示1
Q:
tmp[0] = input[i].toAscii();
bytes[] ascii = ASCIIEncoding.GetBytes(input);
tmp[0] = ascii[i];
Q:
t = a + (int)(strtol(tmp, NULL, 16));
t = a + int.Parse(string.Format("{0}{1}", tmp[0], tmp[1]),
System.Globalization.NumberStyles.HexNumber);
Q:
v = (int)(strtol(input.mid(t, 2).toLocal8Bit(), NULL, 16));
没有关于toLocal8bit的线索,需要阅读Qt文档……
Q:
snprintf(tmp, 2, "%x", (v * m) % 0x10);
{
string tmptext = ((v*m % 16)).ToString("X2");
tmp[0] = tmptext[0];
tmp[1] = tmptext[1];
}
如果…它只是MD5怎么办?
您可以直接尝试这一点,看看它是否达到了您的需求:
using System;
public string FDigest(string input)
{
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] ascii = System.Text.Encoding.ASCII.GetBytes (input);
byte[] hash = md5.ComputeHash (ascii);
// Convert the byte array to hexadecimal string
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
sb.Append (hash[i].ToString ("X2")); // "x2" for lowercase
return sb.ToString();
}
1显式未优化,旨在作为快速提示;根据需要进行优化
内容总结
以上是互联网集市为您收集整理的将C函数转换为C#全部内容,希望文章能够帮你解决将C函数转换为C#所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。