Visual BASIC 언어 소스:
REM ============================================================================
REM Filename: TestHexView_03.vb
REM
REM Compile: vbc TestHexView_03.vb
REM Execute: TestHexView_03 [filename]
REM
REM Date: 2013. 8. 6.
REM ============================================================================
Imports System.IO
Public Class HexViewUtil
Shared Sub PrintUsage()
Console.WriteLine("Usage: TestHexView_03 [filename]")
End Sub
Shared Function ToHex(c As Integer)
Dim s As String = ""
Dim x1, x2 As Integer
x1 = (c And &HF0) >> 4
x2 = c And &H0F
If x1 < 10 Then
s = s & Chr(x1 + Asc("0"))
Else
s = s & Chr((x1 - 10) + Asc("A"))
End If
If x2 < 10 Then
s = s + Chr(x2 + Asc("0"))
Else
s = s + Chr((x2 - 10) + Asc("A"))
End If
ToHex = s
End Function
Shared Function ToHex8(n As Integer)
Dim s As String = ""
Dim x1, x2, x3, x4, x5, x6, x7, x8 As Integer
x1 = (n And &HF0000000) >> 28
x2 = (n And &HF000000) >> 24
x3 = (n And &HF00000) >> 20
x4 = (n And &HF0000) >> 16
x5 = (n And &HF000) >> 12
x6 = (n And &HF00) >> 8
x7 = (n And &HF0) >> 4
x8 = n And &H0F
If x1 < 10 Then
s = s & Chr(x1 + Asc("0"))
Else
s = s & Chr((x1 - 10) + Asc("A"))
End If
If x2 < 10 Then
s = s + Chr(x2 + Asc("0"))
Else
s = s + Chr((x2 - 10) + Asc("A"))
End If
If x3 < 10 Then
s = s + Chr(x3 + Asc("0"))
Else
s = s + Chr((x3 - 10) + Asc("A"))
End If
If x4 < 10 Then
s = s + Chr(x4 + Asc("0"))
Else
s = s + Chr((x4 - 10) + Asc("A"))
End If
s = s + " "
If x5 < 10 Then
s = s + Chr(x5 + Asc("0"))
Else
s = s + Chr((x5 - 10) + Asc("A"))
End If
If x6 < 10 Then
s = s + Chr(x6 + Asc("0"))
Else
s = s + Chr((x6 - 10) + Asc("A"))
End If
If x7 < 10 Then
s = s + Chr(x7 + Asc("0"))
Else
s = s + Chr((x7 - 10) + Asc("A"))
End If
If x8 < 10 Then
s = s + Chr(x8 + Asc("0"))
Else
s = s + Chr((x8 - 10) + Asc("A"))
End If
ToHex8 = s
End Function
Shared Sub Main(args() as String)
Dim fname = ""
If args.Length < 1 Then
PrintUsage()
Exit Sub
Else
fname = args(0)
End If
If My.Computer.FileSystem.DirectoryExists(fname) Then
Console.WriteLine("The path ""{0}"" is a directory.", fname)
Exit Sub
End If
If My.Computer.FileSystem.FileExists(fname) = False Then
Console.WriteLine("The file ""{0}"" does not exist.", fname)
Exit Sub
End If
Dim info As New FileInfo(fname)
Dim fsize As Long = info.Length
Console.WriteLine("The size of the file ""{0}"" is {1}.", fname, fsize)
Console.WriteLine()
Dim inputFile = IO.File.Open(fname, IO.FileMode.Open)
Dim bufferSize = 16
Dim bytes = New Byte(bufferSize) {}
Dim n = 0
Dim m = 0
Dim i = 0
Dim j = 0
Dim t = ""
Dim c = 0
While n < fsize
m = inputFile.Read(bytes, 0, bufferSize)
If n Mod 16 = 0 Then
Console.Write("{0}: ", ToHex8(n))
End If
For i = 0 To m - 1
c = bytes(i)
If i = 7 Then
Console.Write("-{0}", ToHex(c))
Else
Console.Write(" {0}", ToHex(c))
End If
If c - Asc(" ") < 0 Or c > &H7F Then
t = t + "."
Else
t = t + Chr(c)
End If
Next i
If m < 16 Then
For j = 1 To 16 - m
Console.Write(" ")
Next j
End If
Console.Write(" |{0}", t)
t = ""
If m < 16 Then
For j = 1 To 16 - m
Console.Write(" ")
Next j
End If
Console.WriteLine("|")
n = n + m
End While
inputFile.Close()
Console.WriteLine()
Console.WriteLine("Read {0} bytes.", n)
End Sub
End Class
실행 예 1> TestHexView_03 temp_1.bin
The size of the file "temp_1.bin" is 12.
0000 0000: 48 65 6C 6C 6F 20 74-68 65 72 65 0A |Hello there. |
Read 12 bytes.
실행 예 2> TestHexView_03 myFile.ser
The size of the file "myFile.ser" is 130.
0000 0000: AC ED 00 05 73 72 00-06 50 65 72 73 6F 6E 07 31 |....sr..Person.1|
0000 0010: 46 DB A5 1D 44 AB 02-00 03 49 00 03 61 67 65 4C |F...D....I..ageL|
0000 0020: 00 09 66 69 72 73 74-4E 61 6D 65 74 00 12 4C 6A |..firstNamet..Lj|
0000 0030: 61 76 61 2F 6C 61 6E-67 2F 53 74 72 69 6E 67 3B |ava/lang/String;|
0000 0040: 4C 00 08 6C 61 73 74-4E 61 6D 65 71 00 7E 00 01 |L..lastNameq.~..|
0000 0050: 78 70 00 00 00 13 74-00 05 4A 61 6D 65 73 74 00 |xp....t..Jamest.|
0000 0060: 04 52 79 61 6E 73 71-00 7E 00 00 00 00 00 1E 74 |.Ryansq.~......t|
0000 0070: 00 07 4F 62 69 2D 77-61 6E 74 00 06 4B 65 6E 6F |..Obi-want..Keno|
0000 0080: 62 69 |bi |
Read 130 bytes.
'프로그래밍 > BASIC' 카테고리의 다른 글
Visual BASIC 언어로 평방근, 입방근, n제곱근 구하는 함수를 구현하고 테스트하기 (0) | 2013.01.12 |
---|---|
FreeBASIC 언어로 역삼각함수, 역쌍곡선함수 값을 구하는 예제 (0) | 2013.01.02 |
클래스 상속(subclassing) 예제 for .NET with Visual Basic (0) | 2009.05.01 |
스트링 리스트에서 스트링 찾기(find) with Visual Basic (0) | 2009.04.27 |
스트링 배열에서 스트링 찾기(find) with Visual Basic (0) | 2009.04.27 |