Ja, da man so sehr einfach in 5er Schritten die Anzahl der Stellen der Zahl abzählen kann.
Du kannst dasaber abändern wie du es wünscht
NStr() kann die Binärzahl, interne Darstelung, in insgesamt 63 verschiedene Zahlenbasen umwandeln. Alle Basen von 2 bis 64 und 256 sind möglich. Du kannst die IInteger also mit NStr() zb. zur basis 10 = Dezimal umwandeln, oder Oktal = Basis 8 oder Trinär Basis 3 usw. usw.
Beispiel:
Delphi-Quellcode:
var
S: TStrFormat;
begin
NStr(N);
// umwandeln nach Default Format gespeichert in der globalen Struktur NStrFormat in Unit NInts.pas
NStr(N, 2)
// umwandeln zu einem Binärzahlenstring
NStr(N, 16)
// umwandeln in einen Hexadezimalen String
S := NStrFormat;
S.Base := 10;
S.Plus := '
+';
S.Minus := '
-';
S.Zero := '
0';
S.DigitsPerBlock := 10;
// 10 Ziffern als Block
S.BlockSep := '
-#-';
// die Zeichen -#- zwischen den 10'er Blöcken
NStr(N, S);
// umwandeln in unser eigenes Stringformat
end;
Type
TStrFormat =
packed record // String-Convertion structure
Base: TBase;
// Numberbase
Plus:
array[0..15]
of Char;
// String for positive IInteger (+)
Minus:
array[0..15]
of Char;
// String for negative IInteger (-)
Zero:
array[0..15]
of Char;
// String for zero (0)
Comma: Char;
DigitsPerBlock: Word;
// Digits on one Block
BlockSep:
array[0..15]
of Char;
// separator between two blocks (Space)
BlockPadding: Char;
// left padding char of first block
DigitsPerLine: Word;
// count of digits in one line
LineSep:
array[0..15]
of Char;
// separator after one line (CR+LF)
LinePadding: Char;
// left padding char of first line
DigitsChars:
array[0..63]
of Char;
// possible Digits of a valid Numberstring
FormatChars:
array[0..63]
of Char;
// Numberstrings can contain these chars, but should be ignored
LeftAlign: Boolean;
Offset: Integer;
// Offset to first char that contains digits, NSet(string)
Precision: Integer;
end;
var
NStrFormat: TStrFormat = (
Base: 10;
Plus: '
';
Minus: '
-';
Zero: '
';
Comma: '
,';
DigitsPerBlock: 5;
BlockSep: '
';
BlockPadding: '
';
DigitsPerLine: 0;
LineSep: #13#10;
LinePadding: #0;
DigitsChars: '
0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/';
FormatChars: '
/\-+;:#~"()[]?_<>!§$%&{}''
'#13#10#9;
LeftAlign: False;
Offset: 0;
Precision: 0;
);
function NStr(
const A: IInteger; Base: TBase = 0):
String;
overload;
function NStr(
const A: IInteger;
const Format: TStrFormat):
String;
overload;
Oben mal die Typdeklaration von TStrFormat und die globale Variable NStrFormat die als Default benutzt wird.
Gruß Hagen