标题:在c#和python查看字符串的二进制码时是相同的,但生成的md5码却不同
只看楼主
sidooh
Rank: 4
等 级:业余侠客
帖 子:121
专家分:265
注 册:2009-6-26
结帖率:66.67%
已结贴  问题点数:20 回复次数:1 
在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 14:26
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
得分:20 
是不是顺序的问题,原来好像遇到过字符编码时高位在前还是在后的问题,

QQ:81704464
2011-05-18 05:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-340164-1-1.html




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

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