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