【问题标题】:Why does a negative SByte number have 16 bits in VB.Net?为什么负 SByte 数在 VB.Net 中有 16 位?
【发布时间】:2011-10-02 23:56:58
【问题描述】:

我之前问过一个关于在 If 语句中使用“And”比较运算符比较数字的问题,现在我一直在玩弄按位运算符。所以我写了一个非常基本的代码,可以让我看到二进制格式的任何十进制数的转换。

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MsgBox(ConvertToBinary(-1))
End Sub

Public Function ConvertToBinary(ByVal someInteger As SByte) As String
    Dim converted As String = Convert.ToString(someInteger, 2) '.PadLeft(8, "a"c)
    Return converted
End Function

请注意,我使用 SByte 作为参数 - 它应该只包含 8 位,对吗?但是,出现的消息框有 16 位分配给负数。正数有正确的 8。

【问题讨论】:

    标签: vb.net binary bit signed


    【解决方案1】:

    没有采用SByteConvert.ToString 重载,因此SByte 被隐式转换为Short

    【讨论】:

    • 我相信有?我可以看到它可能会转换它,但 Intellisense 说 ToString 方法有一个 Sbyte 参数。 msdn.microsoft.com/en-us/library/ms131015.aspx
    • @Adam 这是一个完全不同的重载,它需要一个IFormatProvider 作为它的第二个参数,而不是一个整数基数。
    猜你喜欢
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2013-02-13
    • 2020-04-28
    • 1970-01-01
    • 2020-06-29
    相关资源
    最近更新 更多