- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 FileOutputStream
写入文件,我注意到十六进制似乎包含终止 0x0a
。这是文件的输出:
0000000: d100 0b00 0000 4865 6c6c 6f20 776f 726c ......Hello worl
0000010: 6429 0043 0500 0000 7072 696e 740a d).C....print.
(Note hex code comes from vim on Osx Yosimite x64)
请注意,文件以 0x0a
结尾。这是 Linux 的东西(比如某种 EOF 字符)还是 java/FileOutputStream
追加字符?
编辑:代码
public class FileImageOpcodeRenderer implements OpCodeRenderer, AutoCloseable {
private final FileOutputStream stream;
private final Iterable<OpCode> opcodes;
private final List<Byte> data = new ArrayList<>();
public FileImageOpcodeRenderer(Iterable<OpCode> opcodes, String path) {
this.opcodes = opcodes;
try {
this.stream = new FileOutputStream(path);
} catch (IOException ex) {
ex.printStackTrace();
throw new CompilerException("Unable to open output file");
}
}
public void save() throws Exception {
List<Byte> renderedContent = renderOpCodes();
byte[] content = toArray(renderedContent);
stream.write(content, 0, content.length);
}
private List<Byte> renderOpCodes() {
for (OpCode opCode : opcodes) {
writeInt8(null, opCode.opNumber());
opCode.render(this);
}
return this.data;
}
private byte[] toArray(List<Byte> data) {
byte[] content = new byte[data.size()];
for (int index = 0; index < data.size(); index++) {
content[index] = data.get(index);
}
return content;
}
@Override
public void writeInt8(String label, int value) {
data.add((byte)value);
}
@Override
public void writeInt16(String label, int value) {
writeInt8(null, (byte)(value & 0xFF));
writeInt8(null, (byte)((value >> 8) & 0xFF));
}
@Override
public void writeInt32(String label, int value) {
writeInt8(null, (byte)(value & 0xFF));
writeInt8(null, (byte)((value >> 8) & 0xFF));
writeInt8(null, (byte)((value >> 16) & 0xFF));
writeInt8(null, (byte)((value >> 24) & 0xFF));
}
@Override
public void writeInt64(String label, long value) {
writeInt8(null, (byte)(value & 0xFF));
writeInt8(null, (byte)((value >> 8) & 0xFF));
writeInt8(null, (byte)((value >> 16) & 0xFF));
writeInt8(null, (byte)((value >> 24) & 0xFF));
writeInt8(null, (byte)((value >> 32) & 0xFF));
writeInt8(null, (byte)((value >> 40) & 0xFF));
writeInt8(null, (byte)((value >> 48) & 0xFF));
writeInt8(null, (byte)((value >> 56) & 0xFF));
}
@Override
public void writeString(String label, String value) {
writeInt32(null, value.length());
for (byte letter : value.getBytes()) {
System.out.println((int)letter);
writeInt8(null, letter);
}
}
@Override
public void close() throws Exception {
stream.close();
}
}
我什至正在查看 save
中的原始字节它以 0x74
结尾,不是0x0a
.
更新:摩尔代码:
所以我只是编写了这段代码来用 C++ 加载文件:
int main() {
int fd = open("/Users/sircodesalot/Desktop/image.vbaj", O_RDONLY);
char buffer[256] { };
int amout = read(fd, buffer, 256);
cout << amout << endl;
for (int index = 0; index != 256; ++index) {
if (index > 0 && (index % 10 == 0)) cout << endl;
cout << hex << (int)buffer[index] << " ";
}
close(fd);
}
输出:
29
ffffffd1 0 b 0 0 0 48 65 6c 6c
6f 20 77 6f 72 6c 64 29 0 43
5 0 0 0 70 72 69 6e 74 0
0 0 0 0 0 0 0 0 0 0
... (rest of the 256 byte buffer)
看吧,不0xa
?这有什么关系?也许有一些 Linux 约定?
最佳答案
问题可能出在这里:
@Override
public void writeString(String label, String value) {
writeInt32(null, value.length());
for (byte letter : value.getBytes()) {
System.out.println((int)letter);
writeInt8(null, letter);
}
}
您正在以字符为单位写入长度,但随后继续从 getBytes() 写入字节。 getBytes() 使用字符串的平台编码,并且根据编码的不同,getBytes() 可以返回任何内容。
尝试明确指定编码,例如value.getBytes(Charset.forName("ISO-8859-1"));
编辑:还要确保您输出的字符串确实包含您认为它们包含的内容。
关于java - 为什么 Java/Linux 在文件末尾附加 0xa?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25997631/
我正在更改链接网址以添加 www.site.com/index.html?s=234&dc=65828 我通过此代码得到的是:site.com/&dc=65828 var target="&dc=65
我在编译过程中收到错误: src/smtp.c:208:1: warning: control reaches end of non-void function [-Wreturn-type] 这是相
这是我的 bootstrap/html 代码: Put email 位置正确,但我希望输入字段的大小延伸到 div 末尾。谁能帮帮我? 最佳答案 只需按百分比指定宽度,如下所示
我正在尝试获取一个像这样的 json 对象: filters = {"filters": myArray}; 并将其附加到 URL 的末尾,使用: this.router.navigate([`/de
这个问题已经有答案了: Remove hash from url (5 个回答) 已关闭 10 年前。 我有一个网站,stepaheadresidents.com ,并且井号 (#) 会自动添加到 u
我有这个代码 $('container a').appendTo('.container'); dzedzdqdqdqzdqdzqdzqdqzdqd Forgot password
为了练习更多 Python 知识,我尝试了 pythonchallenge.com 上的挑战 简而言之,作为第一步,此挑战要求从末尾带有数字的 url 加载 html 页面。该页面包含一行文本,其中有
我对 FS2 很陌生,需要一些有关设计的帮助。我正在尝试设计一个流,它将从底层的 InputStream 中提取 block ,直到结束。这是我尝试过的: import java.io.{File,
我对 FS2 很陌生,需要一些有关设计的帮助。我正在尝试设计一个流,它将从底层的 InputStream 中提取 block ,直到结束。这是我尝试过的: import java.io.{File,
我正在编写一个 ajax 应用程序,并且在 php 脚本中有一个函数: public function expire_user() { $r=array("return"=>'OK');
我正在使用一个QListView,它包装了一个非常简单的列表模型。我想尝试实现类似于某些网页中看到的“无限滚动”的东西。 目前,模型通过最多添加 100 个项目的方法更新(它们取自外部 Web API
运行 cucumber 测试给我以下错误 end of file reached (EOFError) /usr/lib64/ruby/2.0.0/net/protocol.rb:153:in
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我想知道版本命名的具体作用是什么? 喜欢 jquery.js?ver=1.4.4 我的意思是如果我使用像这样的 cdn jquery/1.4.4/jquery.min.js?ver=1.4.4但是另一
" data-fancybox-group="gallery" title="">" alt="" /> 在此代码中 echo $prod['item_image_url'];打印存储在我的表中的图像
我目前使用 Wordpress 作为博客平台,但我想更改为使用 Jekyll 来生成静态页面。在 WordPress 上,我的 URL 使用以下格式: /年/月/日/标题 但我想将其重定向到 /年/月
根据docs这应该是不可能的 Regular expressions cannot be anchored to the beginning or end of a token 尽管如此,它似乎对我有
有没有办法创建 dijit 并将其附加到 div 的末尾?假设我有以下代码: Add Person 我在网上找到了以下代码,但这替换了我的“attendants”div: var personCo
我有这段代码: //execute post (the result will be something like {"result":1,"error":"","id":"4da775
我需要一些函数方面的帮助。 我想编写一个插入链表的函数。但不仅仅是中间,如果必须插入前端或末尾,它也必须起作用。 结构: typedef struct ranklist { i
我是一名优秀的程序员,十分优秀!