通過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...