Captain-Price_ZA Ответов: 2

Что это за кодировка


добрый день

Я пытаюсь прочитать txt-файл со следующей кодировкой: & 3f9c9aaa

Это преобразуется в: 92.35
В программе, которую он использует.

Я пытаюсь прочитать это значение и разместить его в системе типа табло.
Любая помощь была бы любезна

Спасибо

Что я уже пробовал:

Спрашиваю друзей по программированию. Гуглить такие вещи, как hex, binary и assembly

OriginalGriff

Из одного образца?
Мы не можем сказать.
Что делает с ним источник для другого приложения?

Sergey Alexandrovich Kryukov

Это не "кодирование"...
Вы не показываете ничего, кроме небольшого фрагмента. Какой смысл даже смотреть на него?
—СА

Patrice T

Невозможно сказать из одного примера;
Нужны еще примеры, по крайней мере.

2 Ответов

Рейтинг:
7

Captain-Price_ZA

Всем Привет

Просто чтобы обновить любые будущие пользователи, ищущие эту проблему
Мне удалось ее решить.
это одна прецизионная плавающая точка
IEEE 754

Вот код, который я использовал
это: & 433d7bc4
Переводится как 189.48346

Private Function ConvertHexToSingle(hexVal As String) As [Single]
    Try
        Dim i As Integer = 0, j As Integer = 0
        Dim bArray As Byte() = New Byte(3) {}
        'Dim new as String =

        For i = 0 To hexVal.Length - 1 Step 2
            bArray(j) = [Byte].Parse(hexVal(i).ToString() + hexVal(i + 1).ToString(), System.Globalization.NumberStyles.HexNumber)
            j += 1
        Next
        Array.Reverse(bArray)
        Dim s As [Single] = BitConverter.ToSingle(bArray, 0)
        Return (s)
    Catch ex As Exception
        Throw New FormatException("The supplied hex value is either empty or in an incorrect format. Use the " + "following format: 00000000", ex)
    End Try
End Function


Рейтинг:
2

Garth J Lancaster

Интересно, так ли это просто, как (извините, с#)

string hexString = "43480170";
uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);

byte[] floatVals = BitConverter.GetBytes(num);
float f = BitConverter.ToSingle(floatVals, 0);
Console.WriteLine("float convert = {0}", f);

// Output: 200.0056   


от Как: преобразование между шестнадцатеричными строками и числовыми типами (руководство по программированию на C# )[^] (4-й пример вниз)


Jochen Arndt

Это не шестнадцатеричное представление для единичного значения точности 92.35.
Это будет 0x42B8B333 (а 0x3f9c9aaa - 1.22346997).

Captain-Price_ZA

Большое спасибо. Есть идеи, что это может быть? Пожалуйста, обратитесь к моему комментарию ниже

Jochen Arndt

Я понятия не имею. Я только что указал, что это не двоичное представление упомянутого значения с плавающей запятой одинарной точности.

Captain-Price_ZA

Хорошо, спасибо, я все еще нуб, но есть ли какой-нибудь способ преобразовать это в значение, потому что я пытаюсь сделать таблицу лидеров из этих значений, и мне нужно их преобразовать

Jochen Arndt

Вам нужно знать, как кодируется значение.
Символ & и используемые цифры указывают на то, что это 4-байтовое шестнадцатеричное значение. Но только автор программы будет знать, как она преобразуется.

Captain-Price_ZA

Большое спасибо за вашу помощь

Garth J Lancaster

спасибо, что опроверг это - здесь было закрыто до полуночи, и я выключил свой выигрышный автомат

Captain-Price_ZA

Спасибо за ответ.
я пробовал шестнадцатеричный текстовый конвертер, но это, похоже, не работает, вот еще пример:

трофей: _nameless. 0CA1.1E38 {
вид: куду
пол: бык
смотреть: ""
вариант: бык
африканец: правда
масштаб: & 3f9c9aaa
Рога: 2
рога[0]: _nameless.0C9C.58A8
Рога[1]: _nameless.0C9C.58F8
antler_pair_score: _nameless. 0CA0.EE68
вес: & 441c7fa6
оценка: & 42b8b2b4
points_factor: &амп;3f9d9be8
used_cheat: накладные
kill_time_game: 44
kill_time_real: "05/02/2016 02: 40 PM"
bag_time_game: 99
bag_time_real: "05/02/2016 02: 41 PM"
оружие: "@ @ df_300_s@@"
область применения: "@ @ df_s4_14@@"
kill_zone: "@ @ az_lungs@@"
shot_distance: &амп;433d7bc4
поза: 0
hunter_name: "@@g_pp_unnamed@@"
total_shots_count: 5
total_hits_count: 2
просмотров: 2
хиты[0]: _nameless. 0CA1.1F70
хиты[1]: _nameless. 0CA1.2120
подпись: "@ @ df_area_africa@@"

Это из сохранения, где обычно сохраняются простые вещи, такие как зона убийства, где кодируется shot_distance (но я предполагаю, что не в шестнадцатеричном формате, как я пытался преобразовать)

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.

Patrice T

Примеры кодированных значений без простого значения не помогут.