Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 28.01.2014
Сообщений: 144
.NET 8

Перевести с C++ на C#

02.06.2024, 20:37. Показов 533. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Понимаю просьба конечно не очень, но буду благодарен
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
 
#define HEX_DIGITS "0123456789ABCDEF"
 
char *char2hex(char c, char *buf)
{
    char *ini=buf;
    int h,l;
    h=(c & 0xF0) >> 4;
    l=c & 0x0F;
    *buf=HEX_DIGITS[h]; buf++;
    *buf=HEX_DIGITS[l]; buf++;
    *buf=' '; buf++;
    return buf;
}
 
void dumpStr(char *S, int l, char *Hbuf, char *Cbuf)
{
    int i;
    char *h,*c,sym;
    for (i=0; i<48; i++) Hbuf[i]=' ';
    Hbuf[48]=0;
    for (i=0; i<16; i++) Cbuf[i]=' ';
    Cbuf[16]=0;
    h=Hbuf;
    c=Cbuf;
    for (i=0; i<l; i++)
    {
        sym=S[i];
        h=char2hex(sym,h);
        if ((sym != 10) && (sym != 13) && (sym != 7) && (sym != 0) && (sym != 9))
            *c++=sym;
        else
            *c++='.';
    }
 
}
 
void CVX(int n, char *r)
{
    int i,p,h;
    for (i=0; i<=8; i++) r[i]=0;
    p=7;
    for (i=1; i<=8; i++)
    {
        h=n%16;
        r[p--]=HEX_DIGITS[h];
        n/=16;
    }
}
 
int main(int argc, char* argv[])
{
    char HBuf[49],CBuf[17],Addr[9],C[17],sym;
    char *meat;
    FILE *fi;
    long int offs,addr;
    int len,p,k,i;
    if (argc < 3)
    {
        printf("Too few arguments in command line\n");
        return 0;
    }
    if ((fi=fopen(argv[1],"rb"))==NULL)
    {
        printf("Cannot open file %s\n",argv[1]);
        return 0;
    }
    offs=atol(argv[2]);
    len =atoi(argv[3]);
    meat=(char *) calloc(len,1);
    fseek(fi,offs,SEEK_SET);
    for (i=1; i<=len; i++)
    {   
        sym=(char)fgetc(fi);
        meat[i-1]=sym;
    }
    fclose(fi);
    addr=offs;
    p=0;
    while (1)
    {
        if ((p+15)<len)
            k=16;
        else
            k=len-p;
        for (i=0; i<k; i++) C[i]=meat[p++];
        C[k]=0;
        CVX(addr,Addr);
        dumpStr(C,k,HBuf,CBuf);
        printf("%s: %s | %s |\n",Addr,HBuf,CBuf);
        addr+=16;
        if (p >= len) break;
    }
    free(meat);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.06.2024, 20:37
Ответы с готовыми решениями:

Перевести фиолетовый (105, 62, 151) из RGB в HSB, уменьшить яркость в 2 раза и перевести обратно
Помогите пожалуйста! Перевести фиолетовый (105, 62, 151) из RGB в HSB, уменьшить яркость в 2 раза и перевести обратно

Чтобы перевести мышку на второй монитор надо сделать усилие или бистро перевести
Чтобы перевести мышку на второй монитор надо сделать усилие или быстро перевести, на винде нет такого. Как исправить чтобы мышка ходила...

Перевести из десятичной в двоичную, отзеркалить, перевести обратно в десятичную
Нужно перевести из десятичной в двоичную, отзеркалить, перевести обратно в десятичную Вводится X (1≤X≤109). Пример: ввод 13 вывод 11 ...

3
Модератор
Эксперт Java
 Аватар для alecss131
2880 / 1384 / 411
Регистрация: 11.08.2017
Сообщений: 4,413
Записей в блоге: 2
02.06.2024, 21:36
Код ни разу не на С++, он на чистом Си.
А вообще не помешало бы еще и задание, порой проще написать с нуля, чем переводить код, особенно с таких низких языков как Си на куда более высокий C#, это я про то, что многое, что делается самим в низком языке, обычно есть уже готовое в высоком.
0
1 / 1 / 1
Регистрация: 28.01.2014
Сообщений: 144
02.06.2024, 21:44  [ТС]
alecss131, Написать программу, которая принимает имя файла, смещение, длину блока и выводит на экран шестнадцатеричный дамп этого блока
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
03.06.2024, 09:59
tru2, если по заданию, то так:
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
using System;
using System.IO;
 
namespace ConsoleApp6
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("Неправильное количество аргументов командной строки.");
                Console.ReadLine();
                return;
            }
            string fileName = args[0]; // имя файла
            long offs = Str2Long(args[1]); // смещение
            int len = Str2Int(args[2]); // размер дампа
            byte[] meet = new byte[len];
            using (BinaryReader br = new BinaryReader(File.OpenRead(fileName)))
            {
                br.BaseStream.Position = offs;
                meet = br.ReadBytes(len);
            }
            string dump = "";
            for (int i = 0; i < len; i++)
            {
                if (i % 16 == 0) // для каждых 16-ти байт начинать с адреса
                {
                    dump += $"\n{Long2Hex(offs + i)} -";
                }
                dump += $" {Byte2Hex(meet[i])}";
            }
            Console.WriteLine(dump);
            Console.ReadKey();
        }
 
        private static string Byte2Hex(byte bt) => bt.ToString("X2");
        private static string Long2Hex(long n) => Convert.ToString(n, 16).PadLeft(16, '0');
        private static int Str2Int(string str) => str[1] == 'x' || str[1] == 'X' ? Convert.ToInt32(str, 16) : Convert.ToInt32(str);
        private static long Str2Long(string str) => str[1] == 'x' || str[1] == 'X' ? Convert.ToInt64(str, 16) : Convert.ToInt64(str);
    }
}
P.S. для командной строки notepad.exe 0x2000 0x80 получилось такое:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2024, 09:59
Помогаю со студенческими работами здесь

Ошибка в коде: Перевести число 2-ую СС, переставить цифры так, чтоб получилось максимальное и перевести его в 10-ую СС
Перевести число 2 -ую сс, переставить цифры так, чтоб получилось максимальное и перевести его в 10-ую сс. Выводит ошибку, при вводе...

Перевести из Pascal в C++ и наоборот просто перевести обьясните
Перевести c c++ на Pascal #include &lt;stdio.h&gt; main () { char s; float а=86.531; printf(&quot;%s\n&quot;,&quot;Кафедра ПО&quot;); ...

Не получается перевести код из jQuery перевести в обычный JS
Есть урывок строки: value1 = jQwery('#val1').val(); . Нужно как-то в чистий JS превратить. Буду благодарен за помощь.

QString перевести в char* || QChar перевести в char*
Подскажите пожалуйста как сделать: Исходники в utf-8, qt4.8 setlocale(LC_ALL, &quot;Russian&quot;); QTextCodec *wincodec =...

Как презентации SWF флэш сайта перевести в HTML5 с сохранением эфектов ) Как правильно и полноценно Перевести SWF в HTML5
программа Sothink SWF Decompiler конвертирует SWF файл в HTML5 разбивая его на HTML и JS ...но она тянет только файл 15kb ...это очень...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru