1
A
回答
5
若要將short
變量的位設置轉換爲int
,最快的解決方案是「快速且骯髒」的CopyMemory方法,如here所示。
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Bytes As Long)
Public Sub DoubleToIEEE32(ByVal dValue As Double, ByRef nI1 As Integer, ByRef nI2 As Integer)
Dim fValue As Single
Dim nInt(1) As Integer
fValue = CSng(dValue)
CopyMemory nInt(0), fValue, Len(fValue) ‘ copy from Single to Int Array
‘ Internally, the Low Word is word 1 and High Word is word 2.
‘ Swap them to make it like the PLC guys do it.
nI1 = nInt(1)
nI2 = nInt(0)
End Sub
對於讀取和寫入整數的單個位,請參閱here。相關的源代碼是這樣的:
' The ClearBit Sub clears the nth bit (Bit%)
' of an integer (Byte%).
Sub ClearBit (Byte%, Bit%)
' Create a bitmask with the 2 to the nth power bit set:
Mask% = 2^Bit%
' Clear the nth Bit:
Byte% = Byte% And Not Mask%
End Sub
' The ExamineBit function will return True or False depending on
' the value of the nth bit (Bit%) of an integer (Byte%).
Function ExamineBit% (Byte%, Bit%)
' Create a bitmask with the 2 to the nth power bit set:
Mask% = 2^Bit%
' Return the truth state of the 2 to the nth power bit:
ExamineBit% = ((Byte% And Mask%) > 0)
End Function
' The SetBit Sub will set the nth bit (Bit%) of an integer (Byte%).
Sub SetBit (Byte%, Bit%)
' Create a bitmask with the 2 to the nth power bit set:
Mask% = 2^Bit%
' Set the nth Bit:
Byte% = Byte% Or Mask%
End Sub
' The ToggleBit Sub will change the state of the
' nth bit (Bit%) of an integer (Byte%).
Sub ToggleBit (Byte%, Bit%)
' Create a bitmask with the 2 to the nth power bit set:
Mask% = 2^Bit%
' Toggle the nth Bit:
Byte% = Byte% Xor Mask%
End Sub
相關問題
- 1. 從浮點數中提取小數點
- 2. 如何從浮點數模數中獲取提取整數?
- 3. 從字符串中提取浮點值
- 4. 如何從R中的POSIXct對象中提取浮點數?
- 5. 如何從浮點數中提取二元分數
- 6. 如何從Python中的字符串提取多個浮點數?
- 7. Python ValueError - 從matplotlib軸中提取一個浮點數
- 8. 如何從JQuery中的字符串中提取浮點值
- 9. 從Python中的字符串中提取多個浮點2.7
- 10. python中浮點數的位數問題
- 11. 使用VBA從XML中提取數據
- 12. 從VBA中的DICTIONARY中提取項目
- 13. 如何獲取ms sql中浮點數列中小數點後的位數?
- 14. 提取浮點數的第N個位置
- 15. 從C++中的字符串中提取浮點數的最簡單方法
- 16. mysql查詢中浮點值的位數?
- 17. C++ - 操作浮點數值中的位
- 18. 提取整數和浮點數
- 19. 如何從包含整數的字符串中僅提取浮點數(小數)
- 20. 從'for循環'中提取浮點數,在python中寫入數據框
- 21. 在浮點數中計算小數位
- 22. 獲取C中浮點數的指數
- 23. 從文本文件中提取浮點指數格式的數字
- 24. 如何從QVariant中提取單精度浮點數的二維數組?
- 25. 如何從C++文件的特定行中提取數字(浮點數)?
- 26. 點後3位浮點數
- 27. 從一個字符串中提取正數和負數浮點數php
- 28. 如何使用sscanf提取浮點數?
- 29. 提取交叉浮點數據
- 30. 小數位數浮點數
正是我在尋找的功能。乾杯! – David 2012-02-24 13:59:14
我剛剛注意到你的答案中沒有包含RtlMoveMemory的CopyMemory別名函數。 – David 2012-02-24 20:02:32
@大衛:從我的部分典型的複製和粘貼錯誤...感謝您修復它! – Treb 2012-02-27 08:59:20