我正在努力使我的vb项目中的10个字符进入文本框转换为Base32。这是我的代码。我收到了一个错误 “String”类型的值无法转换为“Byte()”。 WindowsApplication2
Private Sub Ok_Click(sender As Object, e As EventArgs) Handles Ok.Click
Dim DataToEncode As Byte() = txtbox.Text
Dim Base32 As String
Base32 = DataToEncode.ToBase32String()
Auth.Text = Base32
End Sub
答案 0 :(得分:1)
txtbox.Text
中的值是一个不能自动转换为字节数组的字符串。因此,行Dim DataToEncode As Byte() = txtbox.Text
无法编译。要获取字符串的ASCII表示,请使用System.Text.Encoding.ASCII.GetBytes()
方法。
Dim DataToEncode As Byte() = System.Text.Encoding.ASCII.GetBytes(txtbox.Text)
VB.Net中的字符串也不存储ASCII值,它们使用UTF-16。
答案 1 :(得分:1)
如错误所示,您正在尝试获取字符串(Byte()
的上下文)并将其放入类型Byte()
的变量中,这是一个字节数组。字符串不是字节数组,它是字符的逻辑序列,可以在字节中具有不同的表示形式 - 您是否希望将其视为UTF-8编码的字符串?一个ASCII字符串?一个完整的UTF-32字符串?所有这些都是可能是相同文本数据的不同字节表示。
了解了您关注的陈述后,请使用System.Text.Encoding
类将文本转换为<!DOCTYPE HTML>
<html>
<head>
<title></title>
</head>
<body>
<script src="jquery-1.11.1.min.js"></script>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '1521775134725984',
xfbml : true,
status : true,
cookie : true,
version : 'v2.1'
});
};
$("#message").on("click",function(){
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var body = 'Reading JS SDK documentation';
FB.api('/me/feed', 'post', { message: body }, function(response) {
if (!response || response.error) {
alert('Error occured');
} else {
alert('Post ID: ' + response.id);
}
});
}
else {
FB.login(function(){
}, {scope: 'publish_actions'});
}
});
});
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
</body>
</html>
并将其传递给您的方法。
答案 2 :(得分:0)
尝试使用GetBytes
方法将字符串转换为字节数组:
Dim DataToEncode As Byte() = Encoding.UTF8.GetBytes(txtbox.Text)