scegg - 2006/1/21 16:32:00
比如一行
A = &H33
表示33是十六进制的。
&O22表示22是八进制的。
那么,二进制是用什么字母的呢……
谢谢。
LOVEHINA-AVC - 2006/1/21 16:39:00
GG了一下,看来没有
VB中的进制转换是怎样的?
答:用函数Oct()将十进制位数转换为八进制,用Hex()将十进制位数转换为十六进制,不过值得注意的是转换后数字型变为字符型。如果是一个变量我们可以用如下代码完成十进制向其他进制转换的目的。
dim ANumaslong
ANum=&O10′&O是八进制的表示符号ANum自行转换为8。
ANum=&HA′&H是十六进制的表示符号ANum自行转换为10。
如果我们有一个字符变量Astring为八进制的或十六进制的,用ANum=″&O″+Astring和ANum=″&H″+Astring能将它转换为十进制。
VB中我没有找到二进制的转换函数,用如下代码可以实现十进制到二进制的转换。
OptionExplicit
Private Function TenturnTwo(ByValvarNumAsLong)
Dim returnStringAsString,ModNumAsInteger
Do WhilevarNum>0
ModNum=varNumMod2
varNum=varNum\2
returnString=Trim(Str(ModNum))+returnString
Loop
TenturnTwo=returnString
End Function
Private Function TwoturnTen(ByValvarStringAsString)
DimSLenAsLong,I As Long,returnNumAsLong
SLen=Len(varString)
ForI=0ToSLen-1
returnNum=returnNum+Val(Mid(varString,I+1,1))*(2^(SLen-I-1))
Next
TwoturnTen=returnNum
End Function
粘土火星 - 2006/1/21 16:56:00
Visual Basic 语言规范
2.4.2 整数请参见
布尔值 | 浮点数 | 字符串 | 字符 | 日期 | Nothing | 文本 | Integer 数据类型(Visual Basic 语言参考)
整数可以是十进制(以 10 为基)、十六进制(以 16 为基)或八进制(以 8 为基)。十进制整数是一个由十进制数字组成的字符串。十六进制文本是 &H 后跟一个由十六进制数字(0-9、A-F)组成的字符串。八进制文本是 &O 后跟一个由八进制数字 (0-7) 组成的字符串。十进制文本直接表示整数的十进制值,而八进制和十六进制文本则表示整数的二进制值(因此,&H8000S 为 -32768,而不是溢出异常)。
文本的类型由其值或后面的类型字符决定。如果未指定类型字符,则 Integer 类型范围内的值被视为 Integer 类型;Integer 范围外的值被视为 Long。如果整数的类型与保存该整数所需的大小不一致,则将发生编译时错误。
IntegerLiteral ::= IntegralLiteralValue [ IntegralTypeCharacter ](整数 ::= 整数值 [ 整型字符 ])
IntegralLiteralValue ::= IntLiteral | HexLiteral | OctalLiteral(整数值 ::= 十进制整数 | 十六进制整数 | 八进制整数)
IntegralTypeCharacter ::=(整型字符 ::=)
ShortCharacter(短整数字符)|
IntegerCharacter(整数字符)|
LongCharacter(长整数字符)|
IntegerTypeCharacter(Integer 类型字符)|
LongTypeCharacter(Long 类型字符)
ShortCharacter ::= S(短整数字符 ::= S)
IntegerCharacter ::= I(整数字符 ::= I)
LongCharacter ::= L(长整数字符 ::= L)
IntLiteral ::= Digit+(十进制整数 ::= 数字+)
HexLiteral ::= & H HexDigit+(十六进制整数 ::= & H 十六进制数字+)
OctalLiteral ::= & O OctalDigit+(八进制整数 ::= & O 八进制数字+)
Digit(数字)::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
HexDigit(十六进制数字)::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F
OctalDigit(八进制数字)::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
好像没二进制-________________-b
或者看看Decimal.GetBits 方法……
PS:某蛋要做什么?
Klyress - 2006/1/22 10:47:00
反正2进和16进可以简易互换的呀
Prz - 2006/1/22 11:24:00
楼上正解,没有二进制的直接表示法,因为十六进制其实是一样的。
粘土火星 - 2006/2/21 0:26:00
Convert.ToString 方法 (Int32, Int32) [C#]请参见
Convert 类 | Convert 成员 | System 命名空间 | Convert.ToString 重载列表 | Convert 成员(Visual J# 语法) | C++ 托管扩展编程
要求
平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET
语言
C#
C++
JScript
Visual Basic
全部显示
将 32 位有符号整数的值以指定的基数转换为它的等效 String 表示形式。
[Visual Basic]
Overloads Public Shared Function ToString( _
ByVal value As Integer, _
ByVal toBase As Integer _
) As String
[C#]
public static string ToString(
int value,
int toBase
);
[C++]
public: static String* ToString(
int value,
int toBase
);
[JScript]
public static function ToString(
value : int,
toBase : int
) : String;
参数
value
一个 32 位的有符号整数。
toBase
返回值的基数,必须是 2、8、10 或 16。
返回值
以 toBase 为基数的 value 的 String 表示形式。
异常
异常类型 条件
ArgumentException toBase 不是 2、8、10 或 16。
要求
平台: Windows 98, Windows NT 4.0, Windows ME, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 系列, .NET Framework 精简版 - Windows CE .NET
请参见
Convert 类 | Convert 成员 | System 命名空间 | Convert.ToString 重载列表 | Convert 成员(Visual J# 语法) | C++ 托管扩展编程
--------------------------------------------------------------------------------
顶一下这个吧………………今天MDK问某类似的问题就想到似乎这个还没算结贴……
另外还可参考这个……http://msdn.microsoft.com/library/CHS/cpref/html/frlrfSystemIFormatProviderClassTopic.asp
killuav1c - 2006/2/21 4:21:00
I know nothing about VB :(, and i am a software engineering student...
air936542 - 2006/2/21 16:33:00
我是看过汇编后自己写的二进制转换模块~~
scegg - 2006/2/21 20:22:00
谢谢各位,不过问题貌似没有解决好……
fengyuxx - 2006/2/22 17:23:00
十六进制Hex 是&H
八进制octal 是&O
二进制binary 所以大概是&B吧
scegg - 2006/2/22 20:23:00
可惜不是B。