LINUX.ORG.RU

Первая версия libtranslate

 


1

1

Вышла первая версия написанной на C библиотеки libtranslate, предоставляющей удобные функции для перевода чисел из одной системы счисления в другую. На данный момент есть всего четыре функции:

  • char *intoc(int number, int crline) переводит десятичное число в строку из десятичного числа.
  • char *intob(unsinged int number, int length, int crline) переводит десятичное число в строку из двоичного числа.
  • char *intoh(unsigned int number, int crline) переводит десятичное число в строку из шестнадцатеричного числа.
  • void *btoih(char *line, int dec, int ch, int crline) переводит строку из двоичного числа в десятичное число/строку или в шестнадцатеричную строку.

Подробности

Перемещено Falcon-peregrinus из opensource

школьный или студенческий проект?

anonymous ()

«удалён файл». «добавлен в проект». информативно

meequz ★★ ()

Дима, мы за тебя рады, но рано тебе публиковаться.

anonymous ()

уж было подумал, что раз libtranslate то можно с финского на суахили переводить.

ossa ()

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

Radjah ★★★★★ ()

Где твой Бог теперь?

[89] pry(main)> a = 3
=> 3
[90] pry(main)> a.to_s 2
=> "11"

// тысячи других вариантов, прост ruby-блядь и всегда висит запущенный repl

anonymous ()
Ответ на: комментарий от anonymous

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

#include <stdio.h>
#include <unistd.h>
#include <libtranslate.h>
#include <stdlib.h>

int main()
{
 char *aa = intob(10, 10, 1);
 write(1, aa, 11);
 free(aa);
}

запуск программы

/usr/bin/time -f '%S %U %e %K %P' ./test
0.00 0.00 0.00 0 ?%

результат примера с ruby.

/usr/bin/time -f "%S %U %e %K %P"  ruby -e "a=3;print a.to_s 2"
110.00 0.03 0.03 0 100%

Так что моя программа для нужной задачи выполняется очень хорошо. Если считать перевод числа простой задачей, то зачем использовать интерпретаторы, которые выполняют лишние действия? Или они не выполняют лишние действия?

u0atgKIRznY5 ()

Честно говоря, там всё очень плохо, но особенно впечатлил инлайн-ассемблер на ровном месте. Зачем?!

anonymous ()

шедеврально

while(c<a){
  c = (c > a) ? c : c * 10;

)))

Deleted ()
Последнее исправление: ecko (всего исправлений: 1)
Ответ на: комментарий от anonymous

В ассемблере есть то, что может заменить несколько строк на си. В данном случае я использовал стэк, чтобы развернуть число, чтобы оно хранилось в правильном направлении.

u0atgKIRznY5 ()

всё херня, давай по новой

$ cat t.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

char *intoc(int a,int crline)
{
        int b = 0;
        int c = 1;
        int i = 0;
        while(c<a){
                c = (c > a) ? c : c * 10;
                b++;
        }
        c = c / 10;
        char *aa = calloc(b+2,sizeof(char));
        while(c>0){
                b = a / c;
                *(aa + i) = b + 48;
                i++;
                a = a - ( b * c);
                c = c / 10;
        }
        if (crline == 1)
                *(aa + i)='\n';
        return aa;
}


int main(void)
{
        char *s = intoc(-5, 1);
        puts(s);
        return 0;
}
$ gcc -o t t.c -Wall
$ ./t


$
Deleted ()

Скажите пожалуйста, а какая лицензия у вашей замечательной библиотеки? Мы очень хотим использовать ее в продакшоне, вы предоставляете услуги поддержки?

java_util_Random ★★ ()
Ответ на: комментарий от u0atgKIRznY5

Указать лицензию в репозитории, конечно же, религия не позволяет.

DeadEye ★★★★★ ()
Ответ на: комментарий от u0atgKIRznY5

Впечатляет. Можешь выложить в галерею своё рабочее окружение. Было бы интересно посмотреть как выглядит редактор, консоли у человека, который действительно делает шаги по развитию русского софта.

anonymous ()
Ответ на: комментарий от u0atgKIRznY5

Услуги поддержки? Мне вопрос не совсем ясен.

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

java_util_Random ★★ ()
Ответ на: комментарий от java_util_Random

Я как разработчик и автор библиотеки делаю с кодом что захочу. Насчёт проблем с библиотекой,

Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНЫХ ЦЕЛЕЙ. Смотрите GNU General Public License для более подробной информации.

u0atgKIRznY5 ()

Не работает

$ ./configure --host=arm-linux-gnueabi
$ make
arm-linux-gnueabi-gcc -c main.c
/tmp/ccCNj4Ck.s: Assembler messages:
/tmp/ccCNj4Ck.s:384: Error: expression too complex -- `push r3'
/tmp/ccCNj4Ck.s:416: Error: expression too complex -- `pop r3'
/tmp/ccCNj4Ck.s:665: Error: expression too complex -- `push r3'
/tmp/ccCNj4Ck.s:684: Error: expression too complex -- `pop r3'
makefile:8: recipe for target 'main.o' failed
make: *** [main.o] Error 1
EXL ★★★★★ ()

Но ведь уже есть snprintf, который делает то же самое.

kirk_johnson ★★ ()

Вышла первая версия написанной на C библиотеки libtranslate, предоставляющей удобные функции для перевода чисел из одной системы счисления в другую.
На данный момент есть всего четыре функции

Не густо у нас с системами счисления...

Virtuos86 ★★★★★ ()

Напиши libsatral, была эта либа у пары лоровцев, но исходники пролюбили.

greenman ★★★★★ ()
Ответ на: комментарий от kirk_johnson

неправда. он делает больше и лучше. может быть, даже быстрее. но не то же самое :)

Deleted ()
Ответ на: комментарий от Deleted

но не то же самое

Да-да! Это не глюки, это обратная совместимость с будущими версиями.

i-rinat ★★★★★ ()
Ответ на: комментарий от Deleted

неправда. он делает больше и лучше. может быть, даже быстрее. но не то же самое :)

Больше и лучше конвертирует числа в другую систему исчисления? Ты совсем поехал?

kirk_johnson ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.