| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1228 人关注过本帖
标题:在c#和python查看字符串的二进制码时是相同的,但生成的md5码却不同
只看楼主 加入收藏
sidooh
Rank: 4
等 级:业余侠客
帖 子:121
专家分:265
注 册:2009-6-26
结帖率:66.67%
收藏
 问题点数:0 回复次数:0 
在c#和python查看字符串的二进制码时是相同的,但生成的md5码却不同
大家好,我用c#和python查看字符串的二进制码时是相同的,但生成的md5码却不同
测试淘宝api,python生成的md5码是正确的,c#不对

c#
程序代码:
String str = "咖啡";
MD5 m = MD5.Create();
byte[] data = (Encoding.Default.GetBytes(str));
StringBuilder sbuilder = new StringBuilder();
for(int i=0;i<data.Length;i++){
  sbuilder.Append(data[i].ToString("x2"));
}
byte[] hex = Encoding.Default.GetBytes(str);
StringBuilder hex_builder = new StringBuilder();
foreach(byte a in hex){
  hex_builder.Append("{0:x2}",a);
}
//md5码
Response.Write(sbuilder.ToString());
//二进制码
Response.Write(hex_builder.ToString());


python
程序代码:
str = '咖啡'
m = hashlib.md5()
m.update(str)
#md5码
print m.hexdigest()
#二进制码
print ' '.join(["%02x"%ord(x) for x in str])


二进制码都是e5 92 96 e5 95 a1
md5码
(c#)a761914f9760af3c112e24f08dea1b16
(python)3b7daa58a1fecdf5ba4d94d539fbb4d5

据说.net默认编码是utf16,但我在python用utf16解码时,二进制码是92e5 e596 a195(为什么两个字节一空?是两个字节作为一个byte?)
搜索更多相关主题的帖子: 淘宝 二进制 字符串 
2011-05-17 15:47
快速回复:在c#和python查看字符串的二进制码时是相同的,但生成的md5码却不同
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024724 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved