diff --git a/src/main/java/de/neemann/digital/core/IntFormat.java b/src/main/java/de/neemann/digital/core/IntFormat.java index 698220ed0..ffa09e5b1 100644 --- a/src/main/java/de/neemann/digital/core/IntFormat.java +++ b/src/main/java/de/neemann/digital/core/IntFormat.java @@ -29,6 +29,10 @@ public enum IntFormat { * binary */ bin, + /** + * octal + */ + oct, /** * ascii format */ @@ -73,6 +77,8 @@ public enum IntFormat { return "0x" + toHex(inValue); case bin: return "0b" + toBin(inValue); + case oct: + return "0" + toOct(inValue); case ascii: return "'" + (char) inValue.getValue() + "'"; default: @@ -100,6 +106,19 @@ public enum IntFormat { return sb.toString(); } + private static String toOct(Value inValue) { + final int bits = inValue.getBits(); + final int numChars = (bits - 1) / 3 + 1; + + StringBuilder sb = new StringBuilder(numChars); + final long value = inValue.getValue(); + for (int i = numChars - 1; i >= 0; i--) { + int c = (int) ((value >> (i * 3)) & 0x7); + sb.append(DIGITS[c]); + } + return sb.toString(); + } + /** * Creates a short hex representation of the given value. diff --git a/src/main/resources/lang/lang_de.xml b/src/main/resources/lang/lang_de.xml index d581e95be..4c55c1caa 100644 --- a/src/main/resources/lang/lang_de.xml +++ b/src/main/resources/lang/lang_de.xml @@ -1117,6 +1117,7 @@ Sind evtl. die Namen der Variablen nicht eindeutig? Dezimal mit Vorzeichen Vorgabe Hexadezimal + Oktal Verschiebeweite hat Vorzeichen Verschiebeweite verwendet Zweierkomplement Modus diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index 597940bbc..45c64cbb9 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -1106,6 +1106,7 @@ signed decimal default hex + octal shift input has sign shift input data has two complement format Mode