Variable-length quantity: Difference between revisions
Added FreeBASIC
No edit summary |
(Added FreeBASIC) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 189:
1fffff
</pre>
==={{header|FreeBASIC}}===
{{trans|Wren}}
<syntaxhighlight lang="vbnet">Sub toOctets(n As Integer, octets() As Integer)
Dim As String s = Bin(n)
Dim As Integer le = Len(s)
Dim As Integer r = le Mod 7
Dim As Integer d = le \ 7
If (r > 0) Then
d += 1
s = Right("0000000" & s, 7 * d)
End If
For i As Integer = 0 To d - 2
Redim Preserve octets(i+1) As Integer
octets(i) = Val("&B1" & Mid(s, i * 7 + 1, 7))
Next i
octets(d - 1) = Val("&B0" & Mid(s, (d - 1) * 7 + 1, 7))
End Sub
Function fromOctets(octets() As Integer) As Integer
Dim As String s = ""
For i As Integer = 0 To Ubound(octets)
s &= Right("0000000" & Bin(octets(i)), 7)
Next i
Return Val("&B" & s)
End Function
Dim As Integer tests(1) = {2097152, 2097151}
Dim As Integer i
For i = 0 To Ubound(tests)
Dim As Integer octets()
toOctets(tests(i), octets())
Dim As String display = ""
For j As Integer = 0 To Ubound(octets)
display &= "0x" & Hex(octets(j), 2) & " "
Next j
Print tests(i); " -> "; display; "-> "; fromOctets(octets())
Next i
Sleep</syntaxhighlight>
{{out}}▼
==={{header|Visual Basic .NET}}===
Line 2,443 ⟶ 2,486:
{{libheader|Wren-fmt}}
{{libheader|Wren-str}}
<syntaxhighlight lang="
import "./str" for Str
var toOctets = Fn.new { |n|
Line 2,478 ⟶ 2,521:
System.print(fromOctets.call(octets))
}</syntaxhighlight>
{{out}}
<pre>▼
2097152 -> Ox81 Ox80 Ox80 Ox00 -> 2097152
2097151 -> Oxff Oxff Ox7f -> 2097151
</pre>▼
=={{header|XPL0}}==
Line 2,525 ⟶ 2,574:
81 FF FF 7E
8F FF FF FF 7F
▲</pre>
▲{{out}}
▲<pre>
▲2097152 -> Ox81 Ox80 Ox80 Ox00 -> 2097152
▲2097151 -> Oxff Oxff Ox7f -> 2097151
</pre>
|