1 21 22 package org.armedbear.j; 23 24 public final class BinaryLine extends AbstractLine implements Line 25 { 26 private final int start; 27 private final byte[] bytes; 28 private final int count; 29 30 public BinaryLine(int start, byte[] bytes, int count) 31 { 32 this.start = start; 33 this.bytes = bytes; 34 this.count = count; 35 } 36 37 public final int flags() 38 { 39 return 0; 40 } 41 42 public final void setFlags(int flags) {} 43 44 public final String getText() 45 { 46 Debug.assertTrue(bytes != null); 47 FastStringBuffer sb = new FastStringBuffer(256); 48 String s = Long.toHexString(0x100000000L + start); 49 s = s.substring(1, s.length()); 50 sb.append(s + " "); 51 int end = start + count; 52 for (int i = start; i < end; i++) { 53 s = Integer.toHexString(0x200 + bytes[i]); 54 s = s.substring(1, s.length()) + " "; 55 sb.append(s); 56 } 57 for (int i = count; i < 16; i++) 59 sb.append(" "); 60 for (int i = start; i < end; i++) { 61 char c = (char) bytes[i]; 62 if (c < ' ' || c >= 0x7f) 63 c = '.'; 64 sb.append(c); 65 } 66 return sb.toString(); 67 } 68 69 public final void setText(String s) {} 70 71 public final char charAt(int i) 72 { 73 return getText().charAt(i); 74 } 75 76 public final String substring(int beginIndex) 77 { 78 return getText().substring(beginIndex); 79 } 80 81 public final String substring(int beginIndex, int endIndex) 82 { 83 return getText().substring(beginIndex, endIndex); 84 } 85 86 public final String trim() 87 { 88 return getText().trim(); 89 } 90 91 public final int length() 92 { 93 return getText().length(); 94 } 95 96 public final byte[] getBytes(String encoding) 97 { 98 return bytes; 99 } 100 101 public final boolean isBlank() 102 { 103 return false; 104 } 105 } 106 | Popular Tags |