Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
13 / 13 / 2
Регистрация: 06.06.2012
Сообщений: 136
1

Программа для чтения бинарных файлов: не удается перевести код с другого ЯП

08.10.2012, 09:52. Просмотров 2113. Ответов 6
Метки нет (Все метки)


Составляю прогу для чтения бинирника, возникла такая проблема, собственно читаю по структуре
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
type = struct WEAPON_ESSENCE {
    unsigned int id;
    unsigned int id_major_type;
    unsigned int id_sub_type;
    namechar name[32];
    unsigned int require_projectile;
    char file_model_right[128];
    char file_model_left[128];
    char file_matter[128];
    char file_icon[128];
    int require_strength;
    int require_agility;
    int require_energy;
    int require_tili;
    unsigned int character_combo_id;
    int require_level;
    int level;
    int fixed_props;
    int damage_low;
    int damage_high_min;
    int damage_high_max;
    int magic_damage_low;
    int magic_damage_high_min;
    int magic_damage_high_max;
    float attack_range;
    unsigned int short_range_mode;
    int durability_min;
    int durability_max;
    int levelup_addon;
    int material_need;
    int price;
    int shop_price;
    int repairfee;
    float drop_probability_socket0;
    float drop_probability_socket1;
    float drop_probability_socket2;
    float make_probability_socket0;
    float make_probability_socket1;
    float make_probability_socket2;
    float probability_addon_num0;
    float probability_addon_num1;
    float probability_addon_num2;
    float probability_addon_num3;
    float probability_unique;
    struct {
        unsigned int id_addon;
        float probability_addon;
    } addons[32];
    struct {
        unsigned int id_rand;
        float probability_rand;
    } rands[32];
    struct {
        unsigned int id_unique;
        float probability_unique;
    } uniques[16];
    int durability_drop_min;
    int durability_drop_max;
    int decompose_price;
    int decompose_time;
    unsigned int element_id;
    int element_num;
    int pile_num_max;
    unsigned int has_guid;
    unsigned int proc_type;
}
Структура не на шарпе, пытался перевести, вот что вышло :
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public int id;
            public int id_major_type;
            public int id_sub_type;
            public string name;
            public int require_projectile;
            public string file_model_right;
            public string file_model_left;
            public string file_matter;
            public string file_icon;
            public int require_strength;
            public int require_agility;
            public int require_energy;
            public int require_tili;
            public int character_combo_id;
            public int require_level;
            public int level;
            public int fixed_props;
            public int damage_low;
            public int damage_high_min;
            public int damage_high_max;
            public int magic_damage_low;
            public int magic_damage_high_min;
            public int magic_damage_high_max;
            public float attack_range;
            public int short_range_mode;
            public int durability_min;
            public int durability_max;
            public int levelup_addon;
            public int material_need;
            public int price;
            public int shop_price;
            public int repairfee;
            public float drop_probability_socket0;
            public float drop_probability_socket1;
            public float drop_probability_socket2;
            public float make_probability_socket0;
            public float make_probability_socket1;
            public float make_probability_socket2;
            public float probability_addon_num0;
            public float probability_addon_num1;
            public float probability_addon_num2;
            public float probability_addon_num3;
            public float probability_unique;
А что делать с :
C#
1
2
3
4
5
  float probability_unique;
    struct {
        unsigned int id_addon;
        float probability_addon;
    } addons[32];
Не пойму. Помогите перевести на шарп, и соответственно прочитать) Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2012, 09:52
Ответы с готовыми решениями:

Использование BinaryWrite для чтения бинарных файлов
Кто подскажет, можно ли как считывать в скрипте двоичный файл, лежащий на сервере (например,...

Программа для чтения *.ASE файлов.
Программа должна читать *.ASE файл, в Си все работает fscanf(m_FilePointer, '%s', &strWord);...

Программа для чтения и просмотра BMP-файлов
Здравствуйте, необходимо написать программу для чтения и просмотра BMP-файлов. Предусмотреть...

Программа для Андроид (TX33) для чтения exe-файлов, написанных на C#
Где найти программу, которая устанавливается на Андроид (TX33) и позволяет работать с exe-файлом,...

6
265 / 255 / 43
Регистрация: 18.03.2012
Сообщений: 506
08.10.2012, 10:09 2
C#
1
2
3
4
5
public struct addon
{
   public uint id_addon;
   public float probability_addon;
}
C#
1
2
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public addon[] addons;
1
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
08.10.2012, 10:28 3
У вас и не выйдет перевести.Нужно маршаллингом всю структуру пилить а не только массив.
+ учитывать кодировку и может еще что.


C#
1
2
3
4
5
6
public struct addon
{
   public uint id_addon;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 34)]//размер учитывать - 33 символа + 1 ограничитель строки
   public string name;
}
что делать с массивом чаров не знаю,не работал с ними.
Булов вроде не нашел,так что пока засыпаем спокойней.
1
13 / 13 / 2
Регистрация: 06.06.2012
Сообщений: 136
08.10.2012, 10:56  [ТС] 4
Я пока пойду про маршалинг почитаю) Ибо вообще с ним не сталкивался
0
28 / 26 / 4
Регистрация: 16.11.2011
Сообщений: 147
08.10.2012, 11:09 5
unsigned int это uint в шарпе вроде
0
13 / 13 / 2
Регистрация: 06.06.2012
Сообщений: 136
08.10.2012, 11:09  [ТС] 6
Это да. но по размеру они оба 4 байта, так что мне разницы особо нету)
0
Темная сторона .Net
590 / 487 / 39
Регистрация: 21.07.2012
Сообщений: 1,668
08.10.2012, 16:11 7
Я этим тоже страдал
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2012, 16:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Программа, совместимая с Windows 2000 для чтения формата файлов MDF
здравствуйте,подскажите программу которая была бы совместима с WIN.2000 для чтения формата файлов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.