投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/7/28 16:47:35
> Skip(50).Take(10)
UTF-8 とは異なり、Shift_JIS は文字列の途中からだと、
それが全角文字の前半部なのか後半部なのかを調べられないので、
バイナリに対して、この方法で切り出すのは危険だと思います。

たとえば、51 バイト目が「全角文字の後半部」だった場合に、
それを誤って「全角文字の前半部」として扱われる可能性がありえますが、
その場合先頭文字だけでなく、そのあとに続く文字も化けてしまう恐れがあります。


【区切り位置を誤認しやすい文字列の例】 
"=" は Shift_JIS で 0x8181
"≠" は Shift_JIS で 0x8182
"a" は Shift_JIS で 0x8281
"b" は Shift_JIS で 0x8282



面倒でも、Shift_JIS 文字列の先頭から、文字数(Char あるいは Rune 単位)で
一文字ずつ拾い出していくなどして、半角なら +1、全角なら +2 として
カウントしていく方が良いかも知れません。