ruby 通過16進製制讀取檔案

2021-10-08 20:23:14 字數 970 閱讀 6971

通過file.sysread()讀取單個byte或多個bytes

在進行一些字串對比時是無法直接對比的

source_file =

file

.open

("e:/test.pcap"

,"rb"

)destination_file =

file

.new

("e:/output.pcap"

,"wb"

)while

true

begin

by = source_file.

sysread(1

)#表示乙個位元組乙個位元組的讀取

p by

p by.

class

p by ==

"\xd4"

destination_file.

syswrite

(by)

rescue

=> e

puts e.message

break

endend

source_file.close

destination_file.close

執行的結果是:

"\xd4"

string

false

解決的辦法是,先拷貝乙份byte(保證原資料不被破壞),將這份byte強制用utf-8編碼,即可進行對比

cby ="#"

.force_encoding

("utf-8"

) p cby

p cby.

class

p cby ==

"\xd4"

對應的執行結果是:

"\xd4"

string

true

c 讀取16進製制檔案

1.為什麼有這種需求 因為有些情況需要避免出現亂碼。不管什麼編碼都是二進位制的,這樣表示為16進製制就可以啦。2.如何讀取16進製制檔案 最近程式設計用這一問題,網上查了一下,感覺還是自己寫吧。16進製制資料一般是 text 0x340xb5.就是0x開頭,之後是兩個數字十六進製制數。如果直接使用s...

C C 讀取16進製制檔案

1.為什麼有這種需求 因為有些情況需要避免出現亂碼。不管什麼編碼都是二進位制的,這樣表示為16進製制就可以啦。2.如何讀取16進製制檔案 最近程式設計用這一問題,網上查了一下,感覺還是自己寫吧。16進製制資料一般是 text 0x340xb5.就是0x開頭,之後是兩個數字十六進製制數。如果直接使用s...

C C 讀取16進製制檔案的方法

1.為什麼有這種需求 因為有些情況需要避免出現亂碼。不管什麼編碼都是二進位制的,這樣表示為16進製制就可以啦。2.如何讀取16進製制檔案 最近程式設計用這一問題,網上查了一下,感覺還是自己寫吧。16進製制資料一般是 text 0x340xb5.就是0x開頭,之後是兩個數字十六進製制數。如果直接使用s...