Кажыся раздуплился как делением. Кому интересно вышл код у меня такого плана:
Dim byte1 As Byte, byte2 As Byte, byte3 As Byte, byte4 As Byte
Dim sum As Long, f As Long
sum = -2000000056
If sum >= 0 Then
byte1 = sum \ 256 ^ 3
byte2 = (sum - byte1 * 256 ^ 3) \ 256 ^ 2
byte3 = (sum - byte1 * 256 ^ 3 - byte2 * 256 ^ 2) \ 256
f = byte3
byte4 = sum - byte1 * 256 ^ 3 - byte2 * 256 ^ 2 - 256 * f
Else
sum = Abs(sum) - 1
byte1 = sum \ 256 ^ 3
byte2 = (sum - byte1 * 256 ^ 3) \ 256 ^ 2
byte3 = (sum - byte1 * 256 ^ 3 - byte2 * 256 ^ 2) \ 256
f = byte3
byte4 = sum - byte1 * 256 ^ 3 - byte2 * 256 ^ 2 - 256 * f
byte1 = 255 - byte1
byte2 = 255 - byte2
byte3 = 255 - byte3
byte4 = 255 - byte4
End If
MsgBox byte1 & ":" & byte2 & ":" & byte3 & ":" & byte4
Накручен, но всё вроде работает.
Проверял кодом другого плана :
Dim L As Long
Dim Fileno As Byte
Dim byte1 As Byte, byte2 As Byte, byte3 As Byte, byte4 As Byte
L = -2000000056
Fileno = FreeFile
Open App.Path & "\1.ini" For Output As Fileno
Close Fileno
Open App.Path & "\1.ini" For Binary As Fileno
Put #Fileno, , L
Get #Fileno, 1, byte1
Get #Fileno, 2, byte2
Get #Fileno, 3, byte3
Get #Fileno, 4, byte4
Close Fileno
MsgBox byte4 & ":" & byte3 & ":" & byte2 & ":" & byte1
ТОЖЕ ТАК НИЧЁ
Спасибо за “\”
Только у меня возник ещё один вопрос. Почему byte1 * 256 ^ 3 работает отлично, а 256 * byte3 выдаёт ошибку переполнения.