Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
ВнизПеревод на С++ Найти похожие ветки
← →
Буратиноо (2009-01-19 12:49) [0]Помогите пожалуйста перевести этот код на С++.
function Convd(x:integer):char;
begin
if x<10 then Convd:=chr(x+ord("0"))
else Convd:=Chr(x-10+ord("A"));
end;
function 10toR(N,R:integer):string;
var s:string;
begin
s:="";
repeat
s:=convd(N mod R)+S;
N:=N div R
until N=0;
10toR:=s;
end;
← →
Сергей М. © (2009-01-19 12:51) [1]Здесь же не изба-переводильня)
Да и нет в C++ точного аналога дельфийских длинных строк
← →
Riply © (2009-01-19 13:26) [2]> [0] Буратиноо (19.01.09 12:49)
> Помогите пожалуйста перевести этот код на С++.
А может лучше попробовать "свистнуть" у ReactOS`цев ? :)NTSTATUS NTAPI RtlIntegerToChar ( ULONG value,
ULONG base,
ULONG length,
PCHAR str
)
00518 {
00519 CHAR buffer[33];
00520 PCHAR pos;
00521 CHAR digit;
00522 ULONG len;
00523
00524 if (base == 0) {
00525 base = 10;
00526 } else if (base != 2 && base != 8 && base != 10 && base != 16) {
00527 return STATUS_INVALID_PARAMETER;
00528 } /* if */
00529
00530 pos = &buffer[32];
00531 *pos = "\0";
00532
00533 do {
00534 pos--;
00535 digit = value % base;
00536 value = value / base;
00537 if (digit < 10) {
00538 *pos = "0" + digit;
00539 } else {
00540 *pos = "A" + digit - 10;
00541 } /* if */
00542 } while (value != 0L);
00543
00544 len = &buffer[32] - pos;
00545 if (len > length) {
00546 return STATUS_BUFFER_OVERFLOW;
00547 } else if (str == NULL) {
00548 return STATUS_ACCESS_VIOLATION;
00549 } else if (len == length) {
00550 memcpy(str, pos, len);
00551 } else {
00552 memcpy(str, pos, len + 1);
00553 } /* if */
00554 return STATUS_SUCCESS;
00555 }
← →
icWasya © (2009-01-19 14:32) [3]itoa +f1
← →
ketmar © (2009-01-19 14:55) [4]именно на C++? rtfm STL, rtfm boost. и не надо велосипедов делать.
---
Do what thou wilt shall be the whole of the Law.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.044 c