cpd/utf32le.go

19 строки
755 B
Go
Исходник Постоянная ссылка Обычный вид История

2019-11-25 18:54:27 +03:00
package cpd
//UTF-32LE
2019-12-21 16:48:59 +03:00
//вторые 2 байта практически всегда 0
//используемый признак не сработает если больше половины текста будет набрано символами с 4 значащими байтами, не представляю, что это за текст...
2020-01-27 17:19:24 +03:00
func matchUTF32le(d []byte, tbl *cpTable) MatchRes {
2020-01-03 19:14:54 +03:00
zerroCounts := 0
2019-11-25 18:54:27 +03:00
for i := 0; i < len(d)-4; i += 4 {
2019-12-21 16:48:59 +03:00
if (int(d[i+2]) + int(d[i+3])) == 0 {
zerroCounts++
2019-11-25 18:54:27 +03:00
}
2019-12-21 16:48:59 +03:00
}
if zerroCounts*2 < len(d)/4 { //количество байтов в файле UTF-32 со значением 0 должно быть больше половины
2020-01-03 19:14:54 +03:00
return MatchRes{0, 0}
2019-11-25 18:54:27 +03:00
}
2020-01-03 19:14:54 +03:00
return MatchRes{zerroCounts, 0}
2019-11-25 18:54:27 +03:00
}