Hi Jay
Thanks. I was trying to avoid byte shifting and masking if possible. I had
hoped that there was a higher level solution, using a combination of the
Convert class and perhaps Encoding/Decoding. There seem to be so many ways
of performing conversions that I thought there must be one to translate
binary code hex. For example, what about foo() where
Dim s As String
Dim b As Byte
s = "40"
b = foo(s)
to give b equal to &H40. Clearly, I can put &H on the beginning of the
string and use CByte(), as I put in my response to Herfried, but that just
seems low-tech. After all, there is a way to create a hex string from a
byte:
Convert.ToString(&H40, 16) gives "40"
so isn't there something to do the reverse?
Charles
Charles,
Use Armin's code, only anding with &hf first.
Public Function Foo(ByVal bytes() As Byte) As Byte
Const mask As Byte = &HF
Return (bytes(0) And mask) << 4 Or (bytes(1) And mask)
End Function
Hope this helps
Jay
Hi Armin
Sorry for the confusion, but I think my correction is a bit slow coming
through. I should have written
ba(0) = &h34
ba(1) = &h30
Charles
I thought this was going to be straight forward, given the wealth
of conversion functions in .NET, but it is proving more convoluted
than imagined.
Given the following
<code>
Dim ba(1) As Byte
Dim b As Byte
ba(0) = &h4
ba(1) = &h0
b = foo(ba)
</code>
What is foo() such that b contains &h40 ?
TIA
Charles
[I could write an algorithm for this, but there must surely be a
succinct conversion for it]
What if ba(0) or ba(1) > &Hf?
If both are [0; &HF]:
b = ba(0) << 4 or ba(1)
--
Armin
How to quote and why:
http://www.plig.net/nnq/nquote.html
http://www.netmeister.org/news/learn2quote.html