0
A
回答
2
您可以用for
環
For i = 0 To UBound(a) \ 2
k = a(i) : a(i) = a(UBound(a) - i) : a(UBound(a) - i) = k
Next i
2
做到這一點。如果我們可以假設一個動態的字節數組和非DBCS區域設置,那麼這通常是快(以及一個班輪):
Bytes = StrConv(StrReverse(StrConv(Bytes, vbUnicode)), vbFromUnicode)
即使不是更快,它也不會慢很多。但是,當數組較短時,它會更慢,因爲是。
時間比較測試平臺:
Option Explicit
Private Sub Easy()
Dim Bytes() As Byte
Dim Iterate As Long
Bytes = StrConv("abcdefghijklmnopqrstuvwxyz", vbFromUnicode)
For Iterate = 1 To 100000
Bytes = StrConv(StrReverse(StrConv(Bytes, vbUnicode)), vbFromUnicode)
Next
End Sub
Private Sub Hard()
Dim Bytes() As Byte
Dim Iterate As Long
Dim I As Long
Dim B As Byte
Bytes = StrConv("abcdefghijklmnopqrstuvwxyz", vbFromUnicode)
For Iterate = 1 To 100000
For I = 0 To UBound(Bytes) \ 2
B = Bytes(I)
Bytes(I) = Bytes(UBound(Bytes) - I)
Bytes(UBound(Bytes) - I) = B
Next
Next
End Sub
Private Sub Main()
Easy
Hard
End Sub
但在一般的 「硬」 的方法是安全的。
0
其他答案對我很有幫助,但是我發現我的數組是使用返回基於1的數組的自定義Split例程來構建的。所以假設陣列是基於0的,對我來說並不適用。此例程可以反轉基於0或1的陣列。我意識到最初的問題是反轉字節數組,但同樣的邏輯將適用。
Private Sub Reverse(ByRef s() As String, Optional ByVal base As Integer = 0)
Dim i As Long
Dim sSwap As String
For i = base To (UBound(s) + base) \ 2
sSwap = s(i)
s(i) = s((UBound(s) + base) - i)
s((UBound(s) + base) - i) = sSwap
Next
End Sub
+0
只需使用傳入數組的'LBound',而不是傳入'base'。 – 2016-06-09 12:39:51
相關問題
- 1. VB6 - 呼叫從字節數組功能
- 2. 將字節數組轉換爲VB6中的帶符號整數
- 3. 將整數轉換爲VB6中的字節數組
- 4. 如何反向填充字節數組的每個實體?
- 5. 使用java數組的反向數字
- 6. 反序列化的字節數組
- 7. 反向字節順序
- 8. 如何在java中反向乘數簽署的分割字節數組?
- 9. 將float數組寫爲每個反向字節
- 10. 修改此代碼以讀取反向字節中的字節?
- 11. 將字節數組的塊寫入文件VB6
- 12. jquery反向數組
- 13. Delphi字節的反向順序
- 14. 反向字節長的順序
- 15. 反向字符串數組w /方法
- 16. C#中使用VB6字符串數組
- 17. 如何返回一個字節數組作爲變種vb6
- 18. 字節檔/鑄造VB6
- 19. 單字節數組到C#中的2d字節數組?
- 20. java中的字節數組
- 21. groovy中的字節數組
- 22. Python中的字節數組
- 23. 字節數組中Appcelerator的
- 24. C++中的字節數組
- 25. 從字節數組中使用一個沒有反射的類?
- 26. 在反序列化中字節數組大小的錯誤
- 27. 序列化/反序列化的字節數組中JSON.NET
- 28. 將數組數組轉換爲字節,反之亦然C#
- 29. 數組中的反向元素
- 30. 如何在VB6中將字節數組的內容正確寫入文件?
沒有一個。你需要手工編寫代碼。 (標準方法是循環到1/2陣列並進行適當的交換)。 – Bathsheba 2014-12-06 15:31:12