文字インデックス ⇔ バイト 相互変換 †
メッセージボックスの選択範囲指定などで使えるかと。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
-
|
-
|
!
|
!
-
|
-
|
!
| #module
#defcfunc ByteToStrIndex var p1, int p2
sdim s1,p2
memcpy s1,p1,p2,0,0 s2=0
s4=-2
repeat p2
if s4!cnt-1{
s3=peek(s1,cnt)
if ((s3>=$81)&(s3<=$9f) )|( (s3>=$e0)&(s3<=$fc))=1{
s4=cnt
}
s2+
}
loop
return s2
#defcfunc StrIndexToByte var p1, int p2
s2=0 repeat p2
s1=peek(p1,s2)
if ((s1>=$81)&(s1<=$9f))|((s1>=$e0)&(s1<=$fc)){
s2+2
}else{
s2+
}
loop
return s2
#global
aa="HSPでWindowsの世界が広がります。"
bb=ByteToStrIndex(aa,strlen(aa))
cc=StrIndexToByte(aa,bb)
mes "もともとの文字\t\t"+aa
mes "Byte値\t\t\t"+strlen(aa)+"byte"
mes "変換された文字数\t"+bb+"文字"
mes "変換されたByte値\t"+cc+"byte"
stop
|