CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

怎么把一个字符串转成Byte数组

楼主copico(北北)2006-03-20 15:46:24 在 .NET技术 / VB.NET 提问

Public   Sub   StringToByteArray(ByVal   strSrc   As   String,   ByVal   ByteArray()   As   Byte)  
                  Dim   i   As   Long  
                  Dim   iCharCnt   As   Integer  
                  Dim   bChar   As   Byte  
                  Dim   iIndex   As   Integer  
   
                  iIndex   =   0  
                  strSrc   =   StrConv(strSrc,   vbFromUnicode)  
                  iCharCnt   =   LenB(strSrc)  
   
                  For   i   =   0   To   iCharCnt   -   1  
   
                          bChar   =   Asc(Mid(strSrc,   i   +   1,   1))  
                          If   bChar   <>   0   Then  
                                  ByteArray(iIndex)   =   bChar  
                                  iIndex   =   iIndex   +   1  
                          End   If   '  
                  Next   i  
   
                  ByteArray(iIndex)   =   0  
          End   Sub  
  上面的是VB版本的,谁可以帮我写下.net呀  
  好几个函数在.NET里都没有 问题点数:30、回复次数:11Top

1 楼fp2002(石头)回复于 2006-03-20 16:16:57 得分 0

你说的是哪几个函数没有啊?这里只有LenB函数没有之外,其他的都有!LenB在。NET中是用Len来代替!Top

2 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-03-20 16:20:47 得分 10

public   function   Bytes(byval   strSrc     as   string)  
  dim   a   as   arraylist  
  dim   c   as   char  
  for   each   c   in   strsrc.tochararray  
  a.add(Convert.tobyte(c))  
  end   for  
  return   a.toarray  
  end   function  
  Top

3 楼xxuu503(中国没有prison break只是因为the company不让拍)回复于 2006-03-20 16:21:30 得分 0

lenb和strconv这几个函数都不需要了吧  
   
  .net里边string是unicode字符的阿Top

4 楼copico(北北)回复于 2006-03-20 16:42:20 得分 0

Public   Declare   Function   FindExeAssoc   Lib   "Resctrl.dll"   (ByVal   pszFile   As   String,   ByVal   pszExeAssoc   As   String)   As   Long  
     
  Dim   str1     As   String   *   512  
  Dim   n   As   Long  
  n   =   FindExeAssoc(Filename,   str1)  
   
  这是VB的,n的返回值是0,正常  
  可在.NET里一样用,只是Dim   str1     As   String这样定义,结果就返回不是0了,很奇怪  
  Top

5 楼copico(北北)回复于 2006-03-20 17:14:54 得分 0

xxuu503(我爱郭芙蓉!)    
  用你的方法会得到一个错误,对于无符号的字节或太大或太小  
  a.add(Convert.tobyte(c))Top

6 楼copico(北北)回复于 2006-03-20 18:03:48 得分 0

顶上去Top

7 楼kjq_vb(跟着MS走)回复于 2006-03-20 18:45:14 得分 0

vb6里的long是.net的integerTop

8 楼CsMLdn(老鼠有米)回复于 2006-03-20 20:28:17 得分 5

Public   Sub   StringToByteArray(ByVal   strSrc   As   String,   ByVal   ByteArray()   As   Byte)  
                  Dim   i   As   Long  
                  Dim   iCharCnt   As   Integer  
                  Dim   bChar   As   Byte  
                  Dim   iIndex   As   Integer  
   
                  iIndex   =   0  
   
                  strSrc   =   StrConv(strSrc,   VbStrConv.Uppercase)'vbFromUnicode改为VbStrConv.Uppercase  
   
                  iCharCnt   =   CByte(strSrc)'LenB改为CByte  
   
                  For   i   =   0   To   iCharCnt   -   1  
   
                          bChar   =   Asc(Mid(strSrc,   i   +   1,   1))  
                          If   bChar   <>   0   Then  
                                  ByteArray(iIndex)   =   bChar  
                                  iIndex   =   iIndex   +   1  
                          End   If   '  
                  Next   i  
   
                  ByteArray(iIndex)   =   0  
          End   SubTop

9 楼lzmtw(水如烟)回复于 2006-03-20 20:51:01 得分 15

 
                  Dim   tmp   As   String   =   "中国China"  
                  Dim   bytes()   As   Byte   =   System.Text.Encoding.Default.GetBytes(tmp)  
                  For   Each   b   As   Byte   In   bytes  
                          Console.WriteLine(b.ToString)  
                  NextTop

10 楼lzmtw(水如烟)回复于 2006-03-20 21:18:16 得分 0

看仔细些就是:  
   
          Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click  
                  Dim   tmp   As   String   =   "中国China"  
                  Console.WriteLine(tmp)  
                  For   Each   ei   As   System.Text.EncodingInfo   In   System.Text.Encoding.GetEncodings  
                          Console.WriteLine("DisplayName:{0},CodePage:{1},Name:{2}",   ei.DisplayName,   ei.CodePage,   ei.Name)  
                          Console.WriteLine(BytesToString(StringToBytes(tmp,   System.Text.Encoding.Default),   ei.GetEncoding))  
                          If   System.Text.Encoding.Default.Equals(ei.GetEncoding)   Then  
                                  Console.WriteLine("Default   Is   {0}   !!!!!!!!!!!!!!!!!!",   ei.Name)  
                          End   If  
                  Next  
          End   Sub  
   
          Private   Function   StringToBytes(ByVal   s   As   String,   ByVal   encoding   As   System.Text.Encoding)   As   Byte()  
                  Return   encoding.GetBytes(s)  
          End   Function  
          Private   Function   BytesToString(ByVal   bytes   As   Byte(),   ByVal   encoding   As   System.Text.Encoding)   As   String  
                  Return   encoding.GetString(bytes)  
          End   FunctionTop

11 楼lzmtw(水如烟)回复于 2006-03-20 21:19:23 得分 0

结果:一大堆  
   
  中国China  
  DisplayName:IBM   EBCDIC   (US-Canada),CodePage:37,Name:IBM037  
  O}?3???>/  
  DisplayName:OEM   United   States,CodePage:437,Name:IBM437  
  ╓╨╣·China  
  DisplayName:IBM   EBCDIC   (International),CodePage:500,Name:IBM500  
  O}?3???>/  
  DisplayName:Arabic   (ASMO   708),CodePage:708,Name:ASMO-708  
  ??╥┘China  
  DisplayName:Arabic   (DOS),CodePage:720,Name:DOS-720  
  ╓╨╣·China  
  DisplayName:Greek   (DOS),CodePage:737,Name:ibm737  
  ╓╨╣·China  
  DisplayName:Baltic   (DOS),CodePage:775,Name:ibm775  
  ??╣·China  
  DisplayName:Western   European   (DOS),CodePage:850,Name:ibm850  
  íe╣·China  
  DisplayName:Central   European   (DOS),CodePage:852,Name:ibm852  
  í?╣˙China  
  DisplayName:OEM   Cyrillic,CodePage:855,Name:IBM855  
  ол╣ЩChina  
  DisplayName:Turkish   (DOS),CodePage:857,Name:ibm857  
  ío╣·China  
  DisplayName:OEM   Multilingual   Latin   I,CodePage:858,Name:IBM00858  
  íe╣·China  
  DisplayName:Portuguese   (DOS),CodePage:860,Name:IBM860  
  ╓╨╣·China  
  DisplayName:Icelandic   (DOS),CodePage:861,Name:ibm861  
  ╓╨╣·China  
  DisplayName:Hebrew   (DOS),CodePage:862,Name:DOS-862  
  ╓╨╣·China  
  DisplayName:French   Canadian   (DOS),CodePage:863,Name:IBM863  
  ╓╨╣·China  
  DisplayName:Arabic   (864),CodePage:864,Name:IBM864  
  ????China  
  DisplayName:Nordic   (DOS),CodePage:865,Name:IBM865  
  ╓╨╣·China  
  DisplayName:Cyrillic   (DOS),CodePage:866,Name:cp866  
  ╓╨╣·China  
  DisplayName:Greek,   Modern   (DOS),CodePage:869,Name:ibm869  
  αΤ╣ωChina  
  DisplayName:IBM   EBCDIC   (Multilingual   Latin-2),CodePage:870,Name:IBM870  
  O}?????>/  
  DisplayName:Thai   (Windows),CodePage:874,Name:windows-874  
  ????China  
  DisplayName:IBM   EBCDIC   (Greek   Modern),CodePage:875,Name:cp875  
  O}?3Γ??>/  
  DisplayName:Japanese   (Shift-JIS),CodePage:932,Name:shift_jis  
  ???ⅳhina  
  DisplayName:Chinese   Simplified   (GB2312),CodePage:936,Name:gb2312  
  中国China  
  Default   Is   gb2312   !!!!!!!!!!!!!!!!!!  
  DisplayName:Korean,CodePage:949,Name:ks_c_5601-1987  
  櫓?China  
  DisplayName:Chinese   Traditional   (Big5),CodePage:950,Name:big5  
  笢弊China  
  DisplayName:IBM   EBCDIC   (Turkish   Latin-5),CodePage:1026,Name:IBM1026  
  O??3?[?>/  
  DisplayName:IBM   Latin-1,CodePage:1047,Name:IBM01047  
  O}?3???>/  
  DisplayName:IBM   EBCDIC   (US-Canada-Euro),CodePage:1140,Name:IBM01140  
  O}?3???>/  
  DisplayName:IBM   EBCDIC   (Germany-Euro),CodePage:1141,Name:IBM01141  
  Oü?3{??>/  
  DisplayName:IBM   EBCDIC   (Denmark-Norway-Euro),CodePage:1142,Name:IBM01142  
  O??3???>/  
  DisplayName:IBM   EBCDIC   (Finland-Sweden-Euro),CodePage:1143,Name:IBM01143  
  O??3{??>/  
  DisplayName:IBM   EBCDIC   (Italy-Euro),CodePage:1144,Name:IBM01144  
  Oè?3???>/  
  DisplayName:IBM   EBCDIC   (Spain-Euro),CodePage:1145,Name:IBM01145  
  O}?3??#>/  
  DisplayName:IBM   EBCDIC   (UK-Euro),CodePage:1146,Name:IBM01146  
  O}?3???>/  
  DisplayName:IBM   EBCDIC   (France-Euro),CodePage:1147,Name:IBM01147  
  Oè?3???>/  
  DisplayName:IBM   EBCDIC   (International-Euro),CodePage:1148,Name:IBM01148  
  O}?3???>/  
  DisplayName:IBM   EBCDIC   (Icelandic-Euro),CodePage:1149,Name:IBM01149  
  O??3???>/  
  DisplayName:Unicode,CodePage:1200,Name:utf-16  
  ??桃湩  
  DisplayName:Unicode   (Big-Endian),CodePage:1201,Name:unicodeFFFE  
  ???楮  
  DisplayName:Central   European   (Windows),CodePage:1250,Name:windows-1250  
  ???úChina  
  DisplayName:Cyrillic   (Windows),CodePage:1251,Name:windows-1251  
  ЦР№ъChina  
  DisplayName:Western   European   (Windows),CodePage:1252,Name:Windows-1252  
  ?D1úChina  
  DisplayName:Greek   (Windows),CodePage:1253,Name:windows-1253  
  ΦΠ??China  
  DisplayName:Turkish   (Windows),CodePage:1254,Name:windows-1254  
  ??1úChina  
  DisplayName:Hebrew   (Windows),CodePage:1255,Name:windows-1255  
  ??1?China  
  DisplayName:Arabic   (Windows),CodePage:1256,Name:windows-1256  
  ??1?China  
  DisplayName:Baltic   (Windows),CodePage:1257,Name:windows-1257  
  ??1?China  
  DisplayName:Vietnamese   (Windows),CodePage:1258,Name:windows-1258  
  ??1úChina  
  DisplayName:Korean   (Johab),CodePage:1361,Name:Johab  
  ???China  
  DisplayName:Western   European   (Mac),CodePage:10000,Name:macintosh  
  ÷–π˙China  
  DisplayName:Japanese   (Mac),CodePage:10001,Name:x-mac-japanese  
  ???ⅳhina  
  DisplayName:Chinese   Traditional   (Mac),CodePage:10002,Name:x-mac-chinesetrad  
  笢弊China  
  DisplayName:Korean   (Mac),CodePage:10003,Name:x-mac-korean  
  櫓?China  
  DisplayName:Arabic   (Mac),CodePage:10004,Name:x-mac-arabic  
  ????China  
  DisplayName:Hebrew   (Mac),CodePage:10005,Name:x-mac-hebrew  
  ?–??China  
  DisplayName:Greek   (Mac),CodePage:10006,Name:x-mac-greek  
  ÷–ΙζChina  
  DisplayName:Cyrillic   (Mac),CodePage:10007,Name:x-mac-cyrillic  
  ÷–?ъChina  
  DisplayName:Chinese   Simplified   (Mac),CodePage:10008,Name:x-mac-chinesesimp  
  中国China  
  DisplayName:Romanian   (Mac),CodePage:10010,Name:x-mac-romanian  
  ÷–π˙China  
  DisplayName:Ukrainian   (Mac),CodePage:10017,Name:x-mac-ukrainian  
  ÷–?ъChina  
  DisplayName:Thai   (Mac),CodePage:10021,Name:x-mac-thai  
  ????China  
  DisplayName:Central   European   (Mac),CodePage:10029,Name:x-mac-ce  
  ÷–??China  
  DisplayName:Icelandic   (Mac),CodePage:10079,Name:x-mac-icelandic  
  ÷–π˙China  
  DisplayName:Turkish   (Mac),CodePage:10081,Name:x-mac-turkish  
  ÷–π˙China  
  DisplayName:Croatian   (Mac),CodePage:10082,Name:x-mac-croatian  
  ÷???China  
  DisplayName:Unicode   (UTF-32),CodePage:12000,Name:utf-32  
   
  DisplayName:Unicode   (UTF-32   Big-Endian),CodePage:12001,Name:utf-32BE  
   
  DisplayName:Chinese   Traditional   (CNS),CodePage:20000,Name:x-Chinese-CNS  
  烘?China  
  DisplayName:TCA   Taiwan,CodePage:20001,Name:x-cp20001  
  髐崠China  
  DisplayName:Chinese   Traditional   (Eten),CodePage:20002,Name:x-Chinese-Eten  
  ???錈hina  
  DisplayName:IBM5550   Taiwan,CodePage:20003,Name:x-cp20003  
  戥China  
  DisplayName:TeleText   Taiwan,CodePage:20004,Name:x-cp20004  
  羨擊China  
  DisplayName:Wang   Taiwan,CodePage:20005,Name:x-cp20005  
  鏻惤China  
  DisplayName:Western   European   (IA5),CodePage:20105,Name:x-IA5  
  ????China  
  DisplayName:German   (IA5),CodePage:20106,Name:x-IA5-German  
  ????China  
  DisplayName:Swedish   (IA5),CodePage:20107,Name:x-IA5-Swedish  
  ????China  
  DisplayName:Norwegian   (IA5),CodePage:20108,Name:x-IA5-Norwegian  
  ????China  
  DisplayName:US-ASCII,CodePage:20127,Name:us-ascii  
  ????China  
  DisplayName:T.61,CodePage:20261,Name:x-cp20261  
  ????China  
  DisplayName:ISO-6937,CodePage:20269,Name:x-cp20269  
  ?―’?China  
  DisplayName:IBM   EBCDIC   (Germany),CodePage:20273,Name:IBM273  
  Oü?3{??>/  
  DisplayName:IBM   EBCDIC   (Denmark-Norway),CodePage:20277,Name:IBM277  
  O??3???>/  
   
   
  以下省....Top

相关问题

  • 如何把16进制字符串转成byte数组
  • byte数组怎么变成字符串?
  • 如何转byte数组为字符串?
  • 从byte数组中得到字符串
  • 怎样把字符串数组转成用,分割的字符串
  • 用,号分割的字符串转成数组
  • byte数组如何转换成byte字符串
  • 关于byte数组转换成字符串的问题
  • 如何将字符串转化为byte数组?
  • 如何CString类型的字符串赋值给BYTE数组。

关键词

  • .net
  • 函数
  • vb
  • iindex
  • strsrc
  • bchar
  • icharcnt
  • bytearray
  • ei
  • dim

得分解答快速导航

  • 帖主:copico
  • xxuu503
  • CsMLdn
  • lzmtw

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo