Pascal: valaki megmutatja nekem a "BinToHex" és "HexToBin" működését?
Nem igazán sikerült összehoznom a dolgot, nem értem: miért pchar változóként hivatkozik a paraméterekre, amikor stringről van szó, hiszen strutils unitban van az eljárás...
Miként lehet megoldani azt, hogy akkor is működjön a knvertálás, ha több szám van megadva (több hexa szám a string-ben, vagy több bináris szám a "HexToBin" esetén?
Amivel próbálkoztam (mondjuk nem értem hogy lehet hogy a bináris számként is "pchar" változót vár):
program Konvert;
uses StrUtils;
var
b : byte;
s : string;
begin
b := 91;
BintoHex(b,s,Length(s));
end.
Megírtam és mégsem működik úgy ahogy kellene sőt, érdekességet is produkál, kétszer írja ki hogy "eredeti:" miközben csak egyszer szerepel a programban ilyen.
program Konvert;
uses StrUtils;
var
binValue : pchar;
HexValue : pchar;
BinBufSize : integer;
decimal : integer;
begin
BinValue := '91';
HexValue:='';
BinBufSize := Length(BinValue);
WriteLn('eredeti: ',BinValue);
BintoHex(binValue,HexValue,BinBufSize);
WriteLn('átalakított: ',HexValue);
BinBufSize := Length(HexValue);
decimal := HexToBin(HexValue,BinValue,BinBufsize);
writeln('binárisban: ',decimal);
ReadLn;
end.
Talán nem jól értelmezted a leírást. Az eljárás a Classes unitban is benne van, azért kell - szerintem - PChar típusnak lenni mivel a 0. indextől értelmezi a stringet, míg a Pascalban ott a string mérete van. Kiírásnál stringgé kell alakítani.
program Konvert;
uses Classes;
var
BinValue, HexValue : PChar;
BinBufSize: integer;
HexValueS : string;
begin
BinValue := 'asdf';
HexValue := '';
BinBufSize := Length(BinValue);
WriteLn('Bin value: ' + string(BinValue));
BinToHex(BinValue, HexValue, BinBufSize);
HexValueS := string(HexValue);
SetLength(HexValues, BinBufSize * 2 );
WriteLn('Hex value: ' + HexValueS);
BinBufSize := Length(HexValue) div 2;
HexToBin(HexValue, BinValue, BinBufSize);
WriteLn('Bin value: ' + string(BinValue));
ReadLn;
end.
Túlcsordulásra illik figyelni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!