Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 219
  • Last Modified:

C to VB.Net conversion

Hi,

I'm trying to convert some C code into VB.Net, can anyone explain in simple terms the code below?

Thank you.

#define S1(a) (((a&2)>>1) | ((a&1)<<2))
#define S2(a) (((a&2)>>0) | ((a&1)<<3))
#define S3(a) (((a&2)>>1) | ((a&1)<<2))
#define S4(a) (((a&2)>>0) | ((a&1)<<3))
#define S5(a) (((a&2)>>1) | ((a&1)<<2))
#define S6(a) (((a&2)>>0) | ((a&1)<<3))
#define S7(a) a
0
IAJWDDIY
Asked:
IAJWDDIY
  • 3
  • 2
  • 2
2 Solutions
 
momi_sabagCommented:
hi

this is an inline macro definitions
any time someone writes in the code S1(x) then it is subsituted with (((x&2)>>1) | ((x&1)<<2))

in order to implement it in vb.net (if there are no macros) you can just write a method that does the exact same thing and call it everytime you see the S1(x) text in the code

the & is an and bit operation,
the >> and << are shifting the bits right and left,
if you don't have a shifting operation in vb you can just multiply be a power of 2
shift left (<<) by x is the same as multiply by 2 in the power of x
shift right (>>) by x is the same as dividing by 2 in the power of x

momi sabag
0
 
IAJWDDIYAuthor Commented:
So if I write in the code S1(1) then would it be subsituted with (((1&2)>>1) | ((1&1)<<2))

Thank you.
0
 
AlexFMCommented:
   Function S1(ByVal a As Integer) As Integer
        Return ((a And 2) >> 1) Or ((a And 1) << 2)
    End Function
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
AlexFMCommented:
Make other functions by the same way. The simplest case is S7:

   Function S7(ByVal a As Integer) As Integer
        Return a
    End Function

You can write function with two additioal parameters if you want, but writing functions S1-S7 allows to translate C code to VB easily, which looks better.
0
 
momi_sabagCommented:
the answer for your question is yes
s1(1) would be subsituted with (((1&2)>>1) | ((1&1)<<2))
0
 
IAJWDDIYAuthor Commented:
Thank you both, much appreciated !
0
 
IAJWDDIYAuthor Commented:
Sorry just noticed I got the Accepted/Assisted the wrong way round, hope I got the points right.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 3
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now