js代码转C#

MiloSoft 2012-06-03 07:38:18
下面有段js想把它转成C#,看上去把一个字符串转成一个16制,主要是 eval("var temp = '"+arr+"'");的用法弄不太懂,请有经验的朋友帮忙看下.



function hexchar2bin(str){
var arr=[];
for(var i=0;i<str.length;i=i+2){
arr.push("\\x"+str.substr(i,2))
}
arr=arr.join("");
eval("var temp = '"+arr+"'");
return temp
}
...全文
439 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hauk 2012-08-28
  • 打赏
  • 举报
回复
static void Main(string[] args)
{
string password = "aaaaaaaaaaaaaa";
string verifyCode = "!FIL";

string md5 = QQMd5.GetMd5Hash(password);

byte[] arr = new byte[16];
for (int i = 0, j = 0; i < md5.Length; i += 2, j++)
{
arr[j] = Convert.ToByte(md5.Substring(i, 2), 16);
}

//Console.WriteLine(Encoding.UTF7.GetString(arr));
Console.WriteLine(QQMd5.GetMd5Hash(Encoding.UTF7.GetString(arr)));
}


请问LZ解决了吗?我也再捣鼓这个问题。。。。
fengboyangjinfeng 2012-06-24
  • 打赏
  • 举报
回复
你这只QQ加密那一部分吧?
这样试试
string s = Encoding.UTF7.GetString(bytes.ToArray());
devmiao 2012-06-03
  • 打赏
  • 举报
回复
C#不支持运行时执行代码,需要动态编译才能实现。
jvhmr 2012-06-03
  • 打赏
  • 举报
回复
.net 有一个可以执行js代码的类库,楼主可以适用下
__天涯寻梦 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:

引用 7 楼 的回复:
引用 6 楼 的回复:

C# code
public static string hexchar2bin(string str)
{
var length = str.Length / 2;
var rem = str.Length % 2 > 0;
var arr = new string[rem ? length + 1 ……
[/Quote]
乱码?你那别是 js 调用的地方有问题吧?
MiloSoft 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
引用 6 楼 的回复:

C# code
public static string hexchar2bin(string str)
{
var length = str.Length / 2;
var rem = str.Length % 2 > 0;
var arr = new string[rem ? length + 1 : length];
f……
[/Quote]
一个16进制的字符串,输出显示的话是乱码..
__天涯寻梦 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 6 楼 的回复:

C# code
public static string hexchar2bin(string str)
{
var length = str.Length / 2;
var rem = str.Length % 2 > 0;
var arr = new string[rem ? length + 1 : length];
for (var i = 0; ……
[/Quote]
结果是不是
\xA9\x06\x44\x9D\x57\x69\xFA\x73\x61\xD7\xEC\xC6\xAA\x3F\x6D\x28
如果不是,你那 js 是什么结果?
MiloSoft 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

C# code
public static string hexchar2bin(string str)
{
var length = str.Length / 2;
var rem = str.Length % 2 > 0;
var arr = new string[rem ? length + 1 : length];
for (var i = 0; i <……
[/Quote]

不对的,你调用 hexchar2bin('A906449D5769FA7361D7ECC6AA3F6D28')试试看
__天涯寻梦 2012-06-03
  • 打赏
  • 举报
回复
public static string hexchar2bin(string str)
{
var length = str.Length / 2;
var rem = str.Length % 2 > 0;
var arr = new string[rem ? length + 1 : length];
for (var i = 0; i < length; ++i)
{
arr[i] = "\\x" + str.Substring(i * 2, 2);
}
if (rem)
{
arr[length] = "\\x" + str[str.Length - 1];
}
return string.Concat(arr);
}

我拿 js 代码试了,这样总一样了
MiloSoft 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

试试这样
C# code
string hexchar2bin(string str)
{
var arr = new string[str.Length];
for (var i = 0; i < arr.Length; ++i)
{
arr[i] = "\\x" + (int)str[i];
}
return string.Conc……

[/Quote]

这种方式不行的,我现在写的代码如下,结果跟js运行的结果差不多,但有几位不对,很奇怪


public static string hexchar2bin(string input)
{
List<byte> bytes = new List<byte>();
for (int i = 0; i < input.Length; i += 2)
{
bytes.Add(Convert.ToByte(input.Substring(i, 2), 16));
}

string s = Encoding.Default.GetString(bytes.ToArray());
return s;
}
__天涯寻梦 2012-06-03
  • 打赏
  • 举报
回复
试试这样
string hexchar2bin(string str)
{
var arr = new string[str.Length];
for (var i = 0; i < arr.Length; ++i)
{
arr[i] = "\\x" + (int)str[i];
}
return string.Concat(arr);
}
MiloSoft 2012-06-03
  • 打赏
  • 举报
回复
能否把整段代码翻译成C#的
uhonor 2012-06-03
  • 打赏
  • 举报
回复
eval() 是将参数中的字符串最为javascript来进行执行的。
上面的函数就是组合了一个字符串“var temp='*****'”,然后把这个字符串当做javascript执行,于是就变成了给一个变量赋值了,然后又返还了这个变量
__天涯寻梦 2012-06-03
  • 打赏
  • 举报
回复

111,126

社区成员

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

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

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