Cyrillic support added to RainbowDump
This commit is contained in:
parent
c6e56956e1
commit
68a2f32c82
1 changed files with 28 additions and 5 deletions
|
@ -45,13 +45,14 @@ public class RainbowDump {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int k = 0;
|
int k = 0;
|
||||||
|
boolean lastCharCyrillic = false;
|
||||||
stringBuilder.append(String.format("%s%08x %s", ANSI_BLUE, 0, ANSI_RESET));
|
stringBuilder.append(String.format("%s%08x %s", ANSI_BLUE, 0, ANSI_RESET));
|
||||||
for (int i = 0; i < byteArray.length; i++) {
|
for (int i = 0; i < byteArray.length; i++) {
|
||||||
if (k == 8)
|
if (k == 8)
|
||||||
stringBuilder.append(" ");
|
stringBuilder.append(" ");
|
||||||
if (k == 16) {
|
if (k == 16) {
|
||||||
stringBuilder.append(ANSI_GREEN + "| " + ANSI_RESET);
|
stringBuilder.append(ANSI_GREEN + "| " + ANSI_RESET);
|
||||||
printChars(byteArray, i);
|
lastCharCyrillic = printChars(byteArray, i, lastCharCyrillic);
|
||||||
stringBuilder.append("\n")
|
stringBuilder.append("\n")
|
||||||
.append(String.format("%s%08x %s", ANSI_BLUE, i, ANSI_RESET));
|
.append(String.format("%s%08x %s", ANSI_BLUE, i, ANSI_RESET));
|
||||||
k = 0;
|
k = 0;
|
||||||
|
@ -79,22 +80,44 @@ public class RainbowDump {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void printChars(byte[] byteArray, int pointer){
|
private static void printChars(byte[] byteArray, int pointer){
|
||||||
|
printChars(byteArray, pointer, false);
|
||||||
|
}
|
||||||
|
private static boolean printChars(byte[] byteArray, int pointer, boolean skipFirstByte){
|
||||||
int j;
|
int j;
|
||||||
if (pointer < 16)
|
if (pointer < 16)
|
||||||
j = 0;
|
j = 0;
|
||||||
else
|
else
|
||||||
j = pointer-16;
|
j = pointer-16;
|
||||||
|
|
||||||
|
int utf8val = 0;
|
||||||
|
if (skipFirstByte){
|
||||||
|
++j;
|
||||||
|
stringBuilder.append(" ");
|
||||||
|
}
|
||||||
|
|
||||||
for (; j < pointer; j++){
|
for (; j < pointer; j++){
|
||||||
|
utf8val = 0;
|
||||||
|
|
||||||
|
if (byteArray.length > (j+1))
|
||||||
|
utf8val = ((byteArray[j] & 0xff) << 8) | (byteArray[j+1] & 0xff);
|
||||||
|
|
||||||
if ((byteArray[j] > 21) && (byteArray[j] < 126)) // man ascii
|
if ((byteArray[j] > 21) && (byteArray[j] < 126)) // man ascii
|
||||||
stringBuilder.append((char) byteArray[j]);
|
stringBuilder.append((char) byteArray[j]);
|
||||||
else if (byteArray[j] == 0x0a)
|
else if (byteArray[j] == 0x0a)
|
||||||
stringBuilder.append("↲"); //""
|
stringBuilder.append("↲"); //""
|
||||||
else if (byteArray[j] == 0x0d)
|
else if (byteArray[j] == 0x0d)
|
||||||
stringBuilder.append("←"); // "␍"
|
stringBuilder.append("←"); // "␍"
|
||||||
|
else if (utf8val >= 0xd080 && utf8val <= 0xd3bf){
|
||||||
|
byte[] arr = new byte[0x2];
|
||||||
|
System.arraycopy(byteArray, j, arr, 0, 2);
|
||||||
|
stringBuilder.append(new String(arr, StandardCharsets.UTF_8)+" ");
|
||||||
|
++j;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
stringBuilder.append(".");
|
stringBuilder.append(".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return (utf8val >= 0xd080 && utf8val <= 0xd3bf && j > pointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void hexDumpUTF8Legacy(byte[] byteArray){
|
public static void hexDumpUTF8Legacy(byte[] byteArray){
|
||||||
|
|
Loading…
Reference in a new issue