2017-08-31 71 views
1

例如到文件,如果我这样做(在朱): f = open("out", "w"); write(f, 0x424d); close(f)xxd out输出出来是:00000000: 4d42 MB 为什么不是为了? (00000000: 424d BM朱莉娅琅 - 如何写才能

+0

查看字节顺序。 –

+0

可能重复的[Little endian vs big endian](https://stackoverflow.com/questions/2247736/little-endian-vs-big-endian) –

+0

我认为endianness。我如何用Julia的自定义排序来编​​写?我不是在谈论C – Tim0thy

回答

2

基本上,Mateen Ulhaq指出这是一个字节码问题。下面可以帮助你迫使处理器的存储上的文件:

function dump_bytes(f,v) 
    foreach(b->write(f,b),[unsafe_load(reinterpret(Ptr{UInt8}, 
    pointer_from_objref(v)),i) for i=1:sizeof(v)]) 
    return nothing 
end 

f = open("out","w") 
dump_bytes(f,0x1234) 
close(f) 

对于反向,即强制文件的字节序的处理器上,你可以像reinterpret(Int16, read(f)) MATEEN的评论建议。