VB.NET 把普通文字字符串转换成二进制(如:0101)

pyy167 2008-08-07 03:25:58
有人知道怎样把一个普通的文字字符串转换成二进制吗?
比如把字符串“abc"转换成类似:011110000之类的二进制串

在网上查的大多都是以下这种的:
Dim strText As String = "大家好"
Dim btText() As Byte
btText = System.Text.Encoding.UTF8.GetBytes(strText) ‘字符串转换成二进制串
strText = System.Text.Encoding.UTF8.GetString(btText)‘二进制串转换成字符串

这里btText得到的并不是二进制啊?不知道是不是我理解有问题?
我知道在计算机内部本来就是以二进制表示的,但这里我想看到那个二进制串,不知道怎么实现,
请大虾们多多指教。
...全文
2081 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
pyy167 2008-09-03
  • 打赏
  • 举报
回复
散分了
pyy167 2008-09-03
  • 打赏
  • 举报
回复
上回一下子回复三次,竟然说我回贴太快,有灌水嫌疑,还好保存下来了。
--------------------------------------
在网上查了一下计算机编码的原理。
我想字符串转换成二进制的方法:字符串先转换成ASCII码,再把ASCII码转换成二进制
这种方法应该是正确的吧。
同时我也通过先把二进制串转换成ASCII码,再把ASCII码转换成字符串,解决了把二进制转回字符串的处理。


计算机编码原理的参考:
http://www.jxcia.com/teachok/computerbasic/ch1/se3.htm
http://www.cnblogs.com/CampFeather/articles/577703.html

“计算机中的数据是用二进制表示的,而人们习惯用十进制数,那么输入输出时,符号、英文字母、阿位伯数字等数据就要进行十进制和二进制之间的转换处理,因此,必须采用一种编码的方法,由计算机自己来承担这种识别和转换工作。”

所以我先把字符串转换成ASCII码,ASCII码正是十进制的。再把十进制的ASCII码用8位的二进制来表示。
如:A的ASCII码是:65,转换成二进制后就是:01000001

我认为我的做法是正确的,可能是能力有限,只能想到这些。希望大家多多指点迷津。


pyy167 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yanlongwuhui 的回复:]
楼主要的是任意字符的二进制,不是十六进制跟二进制的转换吧。感觉5楼应该是正解
[/Quote]
5楼得到的结果并不是:0和1组成的串

不知道我的做法是不是对的,把字符串先转换成ASCII码,再把ASCII码转换成二进制。
pyy167 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 showname 的回复:]
byte ?字节应该是8位的吧..所以一个byte可以保存一个八位的数值..也就是说0至255之间的值..那为什么上面输出的是二进制的01000001010000100100001101000呢 我想应该是255255255这种形式的吧[/Quote]
八位的二进制能表示的最大值不就是:255吗?二进制只有0和1
pyy167 2008-08-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wy24789 的回复:]
帅呆了,没想到可以这样用,以前觉得这convert没用,不过为什么要用Int32.Parse(btText(i),而不直接传bttext(i)[/Quote]
改掉了,可以直接传bttext(i)的,脑子混掉了。
yanlongwuhui 2008-08-08
  • 打赏
  • 举报
回复
楼主要的是任意字符的二进制,不是十六进制跟二进制的转换吧。感觉5楼应该是正解
yanlongwuhui 2008-08-08
  • 打赏
  • 举报
回复
如果是任意字符的二机制的话,觉得你的做法应该没什么问题
useer654321 2008-08-07
  • 打赏
  • 举报
回复
路过
pjagz 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyi8808 的回复:]
VB.NET codeSystem.BitConverter.ToString(btText) '这就是你要的。
[/Quote]
验证一吓,不是二进制!!!
十六进:FF
二进制:11111111
十六进:02
二进制:00000010
十六进:07
二进制:00000111
.......
搞单片机时做过。一时间找不到。
showname 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pyy167 的回复:]
先把字符串转换成ASCII码,再把ASCII码转换成二进制,应该是这样吧:
Dim strText As String = "ABCD"
Dim btText() As Byte
Dim strBin As String = ""
Dim i As Integer
btText = System.Text.Encoding.UTF8.GetBytes(strText)
For i = 0 To btText.Length - 1
strBin = strBin & Convert.ToString(Int32.Parse(btText(i)), 2).PadLeft(8, "0")
Next

最后得到:strBin=“01000001010000100100001101000…
[/Quote]
byte ?字节应该是8位的吧..所以一个byte可以保存一个八位的数值..也就是说0至255之间的值..那为什么上面输出的是二进制的01000001010000100100001101000呢 我想应该是255255255这种形式的吧
wy24789 2008-08-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pyy167 的回复:]
先把字符串转换成ASCII码,再把ASCII码转换成二进制,应该是这样吧:
Dim strText As String = "ABCD"
Dim btText() As Byte
Dim strBin As String = ""
Dim i As Integer
btText = System.Text.Encoding.UTF8.GetBytes(strText)
For i = 0 To btText.Length - 1
strBin = strBin & Convert.ToString(Int32.Parse(btText(i)), 2).PadLeft(8, "0")
Next

最后得到:strBin=“01000001010000100100001101000…
[/Quote]
帅呆了,没想到可以这样用,以前觉得这convert没用,不过为什么要用Int32.Parse(btText(i),而不直接传bttext(i)
wuyi8808 2008-08-07
  • 打赏
  • 举报
回复
Dim strText As String = "大家好" 
Dim binText As String = System.BitConverter.ToString(System.Text.Encoding.UTF8.GetBytes(strText))
pyy167 2008-08-07
  • 打赏
  • 举报
回复
先把字符串转换成ASCII码,再把ASCII码转换成二进制,应该是这样吧:
Dim strText As String = "ABCD"
Dim btText() As Byte
Dim strBin As String = ""
Dim i As Integer
btText = System.Text.Encoding.UTF8.GetBytes(strText)
For i = 0 To btText.Length - 1
strBin = strBin & Convert.ToString(Int32.Parse(btText(i)), 2).PadLeft(8, "0")
Next

最后得到:strBin=“01000001010000100100001101000100”
不知道大家有什么看法,如有错误,请多指点。
zhangchao1211 2008-08-07
  • 打赏
  • 举报
回复
应该是这个吧。

System.Text.Encoding.Unicode.GetBytes(strObj) //strObj是要转化的文字字符
xhan2000 2008-08-07
  • 打赏
  • 举报
回复
int i = int.Parse("123");
string str = Convert.ToString(i, 2);

dim i as integer = cint("123")
dimstr as string = Convert.ToString(i, 2)
wuyi8808 2008-08-07
  • 打赏
  • 举报
回复
System.BitConverter.ToString(btText) '这就是你要的。

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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