Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

107
Visualizações
Desinfle los bytes de datos de punto flotante codificados como Base64

¡Buenos días!

Me gustaría pedir su ayuda para descomprimir String a sus datos originales.

Aquí está el documento que me envió el proveedor.

Descripción de datos

La primera parte describe los datos del umbral.

ingrese la descripción de la imagen aquí

Todos los datos se gestionan como números flotantes de precisión simple IEEE 754 de Little Endian. Su representación binaria es (representada en datos hexadecimales):

ingrese la descripción de la imagen aquí

Datos comprimidos (zip) Los datos binarios de umbral se comprimen utilizando el algoritmo 'deflate'. Cada resultado de compresión se da aquí (representado en datos hexadecimales):

Umbrales: $63 00 03 05 47 24 DA 81 81 A1 C1 9E 81 61 01 98 06 00

Datos codificados (base64) Los datos comprimidos de umbral se codifican en 'base64' para transmitirse como caracteres ASCII. Los resultados de cada conversión se dan aquí (representados en datos hexadecimales):

Umbrales: $59 77 41 44 42 55 63 6B 32 6F 47 42 6F 63 47 65 67 57 45 42 6D 41 59 41

Aquí está el marco de salida (contenido del marco del fabricante) Los datos de los umbrales se envían luego usando su carácter ASCII correspondiente Aquí está el marco de histograma ASTM resultante enviado:

YwADBUck2oGBocGegWEBmAYA

Como se explica en los detalles anteriores, lo que quiero hacer es al revés.

Los paquetes que recibimos son

YwADBUck2oGBocGegWEBmAYA

luego, desde allí, conviértalo al valor hexadecimal Base64, que es la salida.

Umbrales: $59 77 41 44 42 55 63 6B 32 6F 47 42 6F 63 47 65 67 57 45 42 6D 41 59 41

Esta primera parte ya se implementó utilizando esta línea de códigos.

 Function String2Base64(val_string As String) As String Dim hex As String For i As Integer = 0 To val_string.Length - 1 hex &= Asc(val_string.Substring(i, 1)).ToString("x").ToUpper Next Return hex End Function

Sin embargo, estamos atascados en el siguiente proceso, que se desinfla a números flotantes.

Mi pregunta es cómo podemos hacer esto en VB.net para que podamos obtener los siguientes valores de salida en fuente azul.

ingrese la descripción de la imagen aquí

Gracias y que Dios los bendiga a todos.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Su cadena de entrada es una matriz de bytes codificada en base64, que representa una secuencia comprimida (desinflada) de valores de punto flotante ( float / Single ).

  • Puede usar Convert.FromBase64String() para obtener los bytes comprimidos
  • Inicialice un MemoryStream con esta matriz de bytes. Se utiliza como flujo de entrada de un DeflateStream
  • Inicialice un nuevo MemoryStream para recibir el contenido desinflado del método DeflateStream.CopyTo()
  • Obtenga una serie de 4 bytes de la matriz de bytes descomprimida y reconstruya los valores originales (aquí, usando BitConverter.ToSingle() y un ArraySegment(Of Byte) ).

Un ejemplo:

 Imports System.IO Imports System.IO.Compression Dim base64 = "YwADBUck2oGBocGegWEBmAYA" Dim decodedBytes = Convert.FromBase64String(base64) Dim outputData As New List(Of Single) Using inputStream = New MemoryStream(decodedBytes), outputStream = New MemoryStream(), defStream = New DeflateStream(inputStream, CompressionMode.Decompress) defStream.CopyTo(outputStream) defStream.Flush() Dim dataArray = outputStream.ToArray() For pos As Integer = 0 To dataArray.Length - 1 Step 4 ' .Net Framework ' outputData.Add(BitConverter.ToSingle(New ArraySegment(Of Byte)(dataArray, pos, 4).ToArray(), 0)) ' .Net 5+ outputData.Add(BitConverter.ToSingle(New ArraySegment(Of Byte)(dataArray, pos, 4))) Next End Using

El contenido de outputData ahora es:

 0 10 0 10 2 1 5 1
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda