I am receiving a data stream which contains 4 bytes of data which need to be converted to a 32-bit float (IEEE 754). This was easy to do in C as I created a union with a 4-byte array and a 32-bit float. Job done. However I have no idea how to accomplish this in VB (pls note I do not code in VB).
I am reading and writing binary data through a serial port and must (a) reassemble the incoming four bytes that make up a IEEE single-precision float into an actual float, and (b) disassemble a float into its four constituent bytes before squirting them through the serial port.
I am using VB.NET 2008. In VB6, I could use the LSET command, as in:
Code: Private Type typByteArray B(1 To 4) As Byte End Type
[Code]....
But of course this code won't work in VB.NET. In C it would be easy to handle situations like this by using unions, but VB.NET doesn't support them.
Follow-Up available: There's a follow-up with further details, see Convert MBF to IEEE.
I've got some legacy data which is still in use, reading the binary files is not the problem, the number format is. All floating point numbers are saved in MBF format (Single and Double). I've found a topic about that on the MSDN boards but that one only deals with Single values. I'd also would like to stay away from API-Calls as far as I can.
Edit: Just in case somebody needs it, here is the VB.NET Code (it's Option Strict compliant) I ended up with (feel free to convert it to C# and edit it in):
''' <summary>Converts a MBF Single to an IEEE Single</summary> ''' <param name="src">The MBF Single value</param> ''' <returns>The converted IEEE Single value</returns>
OK so in this hex editor I have, Hex Workshop, when I search for a 32 bit float i type in (lets just say) 1. It then spits it back at me in a 32 bit float, but also as hex.
the 32 bit float for 1 = 3F80 0000
I really cant grasp this idea, let alone put it into my program.
able to convert an integer to a float then to that sort of hex.
My app displays the bytes downloaded in a label using: Private Sub MyDownloader_DownloadedByteCountChanged(ByVal ByteCount As Integer) Handles MyDownloader.DownloadedByteCountChanged lblDownloaded.Text = ByteCount.ToString() End Sub But I thought it would be 'nicer' if it display the amount as kb/mb/gb, etc.
I have a single that might have a decimal place but might not. I have to put the digit before the decimal into the first 4 bytes and the digit after in the next 4 bytes.
So 1.1 would be 01-00-00-00-01-00-00-00 or 2.1 would be 02-00-00-00-01-00-00-00 or 1 would be 01-00-00-00-00-00-00-00
The digit before the decimal point is stored like an integer in bytes the same with the digit after the point. So 1.1 gets split into 1 and 1 and then stored as 2 DWORDS: 01000000 and 01000000
I'm trying to send a 28 character string to a remote ip address and port. I've done this successfully in vb.net using the following code snippets:
Dim swon As String = "A55A6B0550000000FFFBDE0030C8" Dim sendBytes As [Byte]() sendBytes = Encoding.ASCII.GetBytes(swon) netStream.Write(sendBytes, 0, sendBytes.Length)
I now have to convert this across to c++ and have the following so far:
but am getting stuck at this point. I'm sure I'm missing a simple syntax error but I can't figure it out!To clarify, I'm not getting an error, but I don't think the string is being converted to bytes correctly as when I convert back, I just get a '01'
Im making a database converter (phpbb to ipb)I noticed during analysing both databases that the posts of phpbb are converted to bytes as you can c here
I want to convert those to regular text again but I have no clue how to script my converter to lookup the bytes place (after 0x) converts the string (as the bytes arent in array) and where to stop converting the bytes (after the ,)then replace the bytes text by the regular text and this needs to be in a loop because all posts need to be converted to normal text.
I have to store the bytes of a image file inside of an XML file that is read by another program... The problem is, if I inject it as just plain bytes, the end-program has an error (presumably because it contains non-legal XML characters). How can I convert bytes into something that XML can legally read? I really have no other options at this point. I have to inject the image file as bytes (specifically a .bmp file).
i'm trying to convert an image into bytes in vb.net but i failed, i searched the web and threads over here, but seems that i couldn't find any working example or code.
Is there anyway to convert an image file bytes array into an array of the real RGB values of that image?
I don't really want to use GDI+ or the System.Drawing library, but simply apply a certain calculation/processing to every byte of the image file and get another array that contains the RGB values of every pixel in that image. I know it could be done as I know how to do it in a different programming language (Python) but not in Visual Basic.
I would like to know if there is any other way than using WriteableBitmap to convert the current screen into array of bytes.Because I am trying to get a screenshot of Esri map, but I am getting "pixel access not allowed" error
The application is working good, i can receive data on port 48888 and i can write it to my logfile, but my problem is when i convert bytes to string. I have the correct data, but all the bufferReadSize is filled with space. Example: if i send only: test, my log file will have test and 4 lines of space only. In my code, right after Dim clientdata As String = Encoding.ASCII.GetString(bytes).
I tried to trim(), replaceI() or any string manipulation, and it's not working!%!? Is there anything i need to do before i can start manipulating that string?
I want it to do is that you input a string, then you select an algorithm (Theres only going to be one RijnDael) then you input a key, then the Initialization Vector comes from "txtIV.text" then you select the key bytes and the block bytes from the numeric up/down, then you either encrypt or decrypt.
Ok i am having some issues designing a base-class to handle generics.Caveat is i need to restrict the type put in as a Numeric type, specifically Int16, Int32, or Int64 (Short or Long).I know you can do Of T as {Structure} but i dont want to select the key bytes and the block bytes from the numeric up/down.
I keep getting a ProtocolViolationException "Bytes to be written to the stream exceed the Content-Length bytes size specified." on the following code.I've tried setting Content-Length numerous ways with no success.
Dim url = "https://domain.com" Dim req As WebRequest = WebRequest.Create(url) req.Method = "POST" req.ContentType = "application/xml"
Does it read the entire message string sent by the client? I have a line to write to the stream later in the code and that does not seem to be sending anything back to the client, although the code around is excuting.
i = stream.Read(bytes, 0, bytes.Length) While (i <> 0) Try ' Translate data bytes to a ASCII string.
Probably missing something silly here, Her eis what my display looks like Sending image...(401303) I would prefer it displays as Sending image...(391 kb)
I am working in windows application, I have one field in sql server which has data type decimal(15,10). When I enter data from application like "123456789012345". It should be convert it in 12345.678901234 when press tab on text box.
My program works through each cell in a raster bitmap loooking at the r g b values. Actually I'm just working with greyscale so r = g = b. I use the get pixel method to return the 8 bit value of each pixel (0 - 255). However I'm now working with a single channel 32 bit float bitmap. I can't load it into VB. I tried Dim myBitmap As New Bitmap(OpenFileDialog1.FileName) but this fails with an unspecified error when trying to open a 32 bit tiff.
The question is: which graphics format will allow me to load a 32bit bitmap into VB, and if I succeed will the getpixel method return 32bit float results for the greyscale level for each pixel?