{
//if ((s.Length % 2) != 0)
// throw new ArgumentException("s is not valid chinese string!");
System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");
//int m = s.Length;
// string str1 = "";
//Encoding.ASCII.GetString(
byte[] bytes = chs.GetBytes(s);
string str = "";
for (int i = 0; i < bytes.Length; i++)
{
str += string.Format("{0:X}", bytes[i]);
}
return str;
}
Function GBToHex(sGB As String) As String 'sGB为传来的汉字字符串
'汉字转16进制
Dim sResult As String
Dim iLoop As Integer
sResult = ""
For iLoop = 1 To Len(sGB)
sResult = sResult + Right("0000" + Hex(Asc(Mid(sGB, iLoop, 1))), 4)
Next iLoop
GBToHex = sResult
End Function
26 个解决方案
#1
#2
我的C#的转完后加入是 CDF6D3。。。。
VB的转后 CDF6D003。。。很多地方都是多了两三个零,其他的字符是一样的,这怎么让他们一样啊,我是用来软件注册的,VB的软件和C#的软件都判断这个注册号,VB的转的对,我用C#开发了一个新软件也判断这个号,现在不同C#的软件不能用,???
VB的转后 CDF6D003。。。很多地方都是多了两三个零,其他的字符是一样的,这怎么让他们一样啊,我是用来软件注册的,VB的软件和C#的软件都判断这个注册号,VB的转的对,我用C#开发了一个新软件也判断这个号,现在不同C#的软件不能用,???
#3
c#代码中
str += string.Format("{0:X}", bytes[i]);
改为
str += string.Format("{0:X2}", bytes[i]);
str += string.Format("{0:X}", bytes[i]);
改为
str += string.Format("{0:X2}", bytes[i]);
#4
晕,你的代码有问题,这与C#还是VB有啥关系
#5
str += string.Format("{0:X2}", bytes[i]);
("{0:X2}", 这里的X2什么意思啊,就是补充的零的个数吗
("{0:X2}", 这里的X2什么意思啊,就是补充的零的个数吗
#6
X表示16进制
X2表示2位的16进制,如果不足,补0.
效果对了么?
X2表示2位的16进制,如果不足,补0.
效果对了么?
#7
我的VB的是那样转的,因为开始注册的时候是用VB的软件注册的,所以VB的转16进制判断注册号对,但是C#的那样转出来的不一样,所以问问大家是不是我VB的C#那个地方写的不对
#8
string str = "";
for (int i = 0; i < bytes.Length; i++)
{
str += string.Format("{0:X}", bytes[i]);
}
可以改为:
str = BitConverter.ToString(bytes).Replace("-","");
#9
v叔 V5
#10
学习了;
#11
我试了,不对,C#中还是CDF3。。。。应该是CDF003。。。。我发现VB中很多多零的地方时3前面,都是003然后字符,C#中都没有00只是字符 直接加3 CDF3
#12
VB6.0企业版,C#2008
#13
#14
).Replace("-……
这是什么?我的C#生成的字符中没有“-”这个符号啊,
#15
快快帮帮忙啊大家
#16
????
#17
你用哪个字符串做的测试?没看到03的
#18
BitConverter.ToString直接把byte数组转为16进制字符串,结果字符串是逐字节以'-'隔开的
v叔就是我,没看我的viena是v开头的吗
V5就是威武,最近流行的网络缩略语
#19
哦,呵呵,还以为是什么那,OUT了我,我的用“-”这个隔开就会出现003了吗,然后我把“-”这个符号去掉是把,17楼的,我的是一个酒店地址,启德大酒店。。。
#20
具体是汉字是“启2亿0定1全0德0定9全亿。。。”大家可以看看,转出来的是字符加3。。。,
VB的是字符加003。。。
VB的是字符加003。。。
#21
看VB代码,好像是每个字符ASCII转16进制,然后前面以0补足4位,不知道对不对?
#22
Uniode一个字符是两个字节的,
C#代码完全不对了
C#代码完全不对了
#23
public static string GetHexFromChs3(string s)
{
Encoding encoding = Encoding.GetEncoding("GB2312");
StringBuilder builder = new StringBuilder();
foreach (char c in s)
{
builder.Append(BitConverter.ToString(encoding.GetBytes(c.ToString())).Replace("-","").PadLeft(4,'0'));
}
return builder.ToString();
}
#24
好像是,但是都是在一个字符上转出来的不一样,都是有003的地方,其他的地方C#的和VB的都一样,只有这个003不一样,改怎么办,难道要找出是哪个汉字转成了转的一个是3一个是003,然后我把这个汉字单独手动加进去00,但是该怎么加啊
#25
这个我去试试
#26
这个好使,非常感谢 wuyazhe(逍遥)
viena (wien 维也纳),你们两个还有其他帮顶贴的人,问题解决了,结贴
viena (wien 维也纳),你们两个还有其他帮顶贴的人,问题解决了,结贴
#1
#2
我的C#的转完后加入是 CDF6D3。。。。
VB的转后 CDF6D003。。。很多地方都是多了两三个零,其他的字符是一样的,这怎么让他们一样啊,我是用来软件注册的,VB的软件和C#的软件都判断这个注册号,VB的转的对,我用C#开发了一个新软件也判断这个号,现在不同C#的软件不能用,???
VB的转后 CDF6D003。。。很多地方都是多了两三个零,其他的字符是一样的,这怎么让他们一样啊,我是用来软件注册的,VB的软件和C#的软件都判断这个注册号,VB的转的对,我用C#开发了一个新软件也判断这个号,现在不同C#的软件不能用,???
#3
c#代码中
str += string.Format("{0:X}", bytes[i]);
改为
str += string.Format("{0:X2}", bytes[i]);
str += string.Format("{0:X}", bytes[i]);
改为
str += string.Format("{0:X2}", bytes[i]);
#4
晕,你的代码有问题,这与C#还是VB有啥关系
#5
str += string.Format("{0:X2}", bytes[i]);
("{0:X2}", 这里的X2什么意思啊,就是补充的零的个数吗
("{0:X2}", 这里的X2什么意思啊,就是补充的零的个数吗
#6
X表示16进制
X2表示2位的16进制,如果不足,补0.
效果对了么?
X2表示2位的16进制,如果不足,补0.
效果对了么?
#7
我的VB的是那样转的,因为开始注册的时候是用VB的软件注册的,所以VB的转16进制判断注册号对,但是C#的那样转出来的不一样,所以问问大家是不是我VB的C#那个地方写的不对
#8
string str = "";
for (int i = 0; i < bytes.Length; i++)
{
str += string.Format("{0:X}", bytes[i]);
}
可以改为:
str = BitConverter.ToString(bytes).Replace("-","");
#9
v叔 V5
#10
学习了;
#11
我试了,不对,C#中还是CDF3。。。。应该是CDF003。。。。我发现VB中很多多零的地方时3前面,都是003然后字符,C#中都没有00只是字符 直接加3 CDF3
#12
VB6.0企业版,C#2008
#13
#14
).Replace("-……
这是什么?我的C#生成的字符中没有“-”这个符号啊,
#15
快快帮帮忙啊大家
#16
????
#17
你用哪个字符串做的测试?没看到03的
#18
BitConverter.ToString直接把byte数组转为16进制字符串,结果字符串是逐字节以'-'隔开的
v叔就是我,没看我的viena是v开头的吗
V5就是威武,最近流行的网络缩略语
#19
哦,呵呵,还以为是什么那,OUT了我,我的用“-”这个隔开就会出现003了吗,然后我把“-”这个符号去掉是把,17楼的,我的是一个酒店地址,启德大酒店。。。
#20
具体是汉字是“启2亿0定1全0德0定9全亿。。。”大家可以看看,转出来的是字符加3。。。,
VB的是字符加003。。。
VB的是字符加003。。。
#21
看VB代码,好像是每个字符ASCII转16进制,然后前面以0补足4位,不知道对不对?
#22
Uniode一个字符是两个字节的,
C#代码完全不对了
C#代码完全不对了
#23
public static string GetHexFromChs3(string s)
{
Encoding encoding = Encoding.GetEncoding("GB2312");
StringBuilder builder = new StringBuilder();
foreach (char c in s)
{
builder.Append(BitConverter.ToString(encoding.GetBytes(c.ToString())).Replace("-","").PadLeft(4,'0'));
}
return builder.ToString();
}
#24
好像是,但是都是在一个字符上转出来的不一样,都是有003的地方,其他的地方C#的和VB的都一样,只有这个003不一样,改怎么办,难道要找出是哪个汉字转成了转的一个是3一个是003,然后我把这个汉字单独手动加进去00,但是该怎么加啊
#25
这个我去试试
#26
这个好使,非常感谢 wuyazhe(逍遥)
viena (wien 维也纳),你们两个还有其他帮顶贴的人,问题解决了,结贴
viena (wien 维也纳),你们两个还有其他帮顶贴的人,问题解决了,结贴