Форум: "Начинающим";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизПреобразование... Int64 в строку Найти похожие ветки
← →
Цукор5 (2007-01-05 17:34) [0]Есть строка, например : 04820001123456.
Надо преобразовать ее к виду : Chr($04)+Chr($82)+Chr($0)+...
Делаю так :
Line:="04820001123456";
I:=StrToInt64Def("$"+Line,0); //где I:Int64
// далее проблемный код
Q:=I; //где Q:DWord. копирую младшее слово
...
Result:=Chr(Lo(LoWord(Q)))+Chr(Hi(LoWord(Q)))+...
Надеюсь смысл понятен.
Вопрос в следующем. А нет ли способа попроще ??? Без всяких Lo,LoWord и т.д.
← →
AlexanderMS © (2007-01-05 17:40) [1]
IntToStr
?
← →
Цукор5 (2007-01-05 17:44) [2]2 AlexanderMS
Господин, не мешайте.
Вы хоть вопрос читали ???
← →
AlexanderMS © (2007-01-05 17:45) [3]Что-то не понял.
Преобразование... Int64 в строку
Есть строка, например : 04820001123456
← →
Palladin © (2007-01-05 17:47) [4]IntToHex(StrToInt64Def("$"+Line,0),2)
← →
Palladin © (2007-01-05 17:50) [5]нет, ну надо же так ступить...
var
s1,s2:String;
i:Integer;
s1:="04820001123456";
setlength(s2,length(s1) div 2);
for i:=1 to length(s1) div 2 Do s2[i]:=chr(strtoint(copy(s2,(i*2)-1,2)));
← →
Palladin © (2007-01-05 17:51) [6]сегодня день тупления
for i:=1 to length(s1) div 2 Do s2[i]:=chr(strtoint(copy(s1,(i*2)-1,2)));
← →
sniknik © (2007-01-05 21:14) [7]> А нет ли способа попроще ??? Без всяких Lo,LoWord и т.д.
var
i: int64;
ch: array[0..7] of char absolute i;
begin
i:= StrToInt64Def("$04820001123456", 0);
Result:= ReverseString(ch);
end;
имхо будет тоже самое, правда смысла большого в этом нет, 0 в середине/начале это тот же конец строки поэтому часть обрежется. вот если бы это изначально стока была "преобразованная" в int64... то получилось бы правильно.
← →
sniknik © (2007-01-05 21:16) [8]> тот же конец строки
для pchar, если делать через string то нет.
← →
sniknik © (2007-01-05 21:32) [9]через string, например так
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
function Conv(const s: string): string;
var
i: ^int64;
begin
SetLength(result, 8);
i:= @result[1];
i^:= StrToInt64Def("$"+s, 0);
result:= ReverseString(result);
end;
begin
s:= Conv("04820001123456");
Label1.Caption:= s;
end;
p.s. переменная s введена специально, посмотреть результат при трассировке... можно сразу присвоить Label1.Caption-у, только там ничего видно изза лидирующего нуля не будет.
← →
begin...end © (2007-01-06 10:27) [10]var
s1, s2: string;
begin
s1 := "04820001123456";
SetLength(s2, Length(s1) div 2);
HexToBin(PChar(s1), PChar(s2), Length(s2));
end
← →
Цукор5 (2007-01-06 13:18) [11]2 begin...end,sniknik
А где взять ReverseString, HexToBin ??? В модулях D7 я их не обнаружил!!!
← →
sniknik © (2007-01-06 13:52) [12]> А где взять ReverseString, HexToBin ??? В модулях D7 я их не обнаружил!!!
курсором встать на слово и нажать Ctrl+F1
← →
DevilDevil © (2007-01-06 19:19) [13]А я вот вопроса не понял. Покажи, что должно быть на входе, что на выходе; в каких типах.
← →
begin...end © (2007-01-06 22:22) [14]> Цукор5 (06.01.07 13:18) [11]
HexToBin находится в модуле Classes.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.227 c