Tách số Long ra byte và ứng dụng

Các mẹo vặt linh tinh khác, không thuộc nhóm nào
Đăng trả lời
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Tách số Long ra byte và ứng dụng

Gửi bài by truongphu »

Thủ thuật: Tách số Long ra byte và ứng dụng
Tác giả: truongphu
Mô tả: Tách số Long ra byte và ứng dụng
Số Long được dựng trên 4 byte. Vậy mỗi số Long cụ thể thì các byte sẽ là bao nhiêu?
Ví dụ Có số Long = 56456645. Thực hiện tách

A- Cách 1: Dùng CopyMemory

Mã: Chọn tất cả

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long) Private Sub Command1_Click()Dim m(3) As ByteCopyMemory m(0), 56456645, 4For i = 0 To 3a = a & "Byte(" & i & ") = " & m(i) & vbCrLfNextMsgBox aEnd Sub
B- Cách 2 : Dùng Lset

Mã: Chọn tất cả

Private Type typByteArr    ByteArray(3) As ByteEnd TypePrivate Type typLong    lng As LongEnd Type Private Sub Command2_Click()Dim Arr As typByteArr, L As typLong    L.lng = 56456645    LSet Arr = L    Dim I%, S As String    For I = 0 To 3        S = S & vbCrLf & "Byte " & I & " is " & Arr.ByteArray(I)    Next    MsgBox SEnd Sub
C- Ứng dụng:
Màu sắc trong hệ màu RGB là một số Long. Tối đa là 16777215 là màu trắng (255, 255, 255), 0 là màu đen (0, 0, 0)
Để tìm nhanh các yếu tố RGB, ta dùng các cách trên:
vd Dùng CopyMemory tìm màu có số Long là 156645:

Mã: Chọn tất cả

Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)Private Sub Form_Load() Dim m(2) As ByteCopyMemory m(0), 156645, 3MsgBox "R: " & m(0) & " G: " & m(1) & " B: " & m(2)End Sub 
Ghi chú: Ta có thể tách cả số Double với bài viết trên
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Hình đại diện của thành viên
truongphu
VIP
VIP
Bài viết: 4785
Ngày tham gia: Chủ nhật 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 528 times

Tìm tất cả các số có 3 chữ số ...

Gửi bài by truongphu »

bugatino T.Tư 11/03/2009 7:08 pm đã viết:Tìm tất cả các số có 3 chữ số "abc" sao cho bình phương số ở giữa (b^2) bằng tích của 2 số đứng ở bên cạnh (a*c)! Mọi người giúp với, minh không nghĩ ra được cách giải bài này!

Mã: Chọn tất cả

Private Sub Command1_Click()For i = 1 To 9    For u = 1 To 9        If ((i * i) Mod u) = 0 Then            If ((i * i) / u) < 10 And u < 10 Then            List1.AddItem (i * i) / u & "  " & i & "  " & u        End If: End If    NextNextEnd Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
Đăng trả lời

Quay về