HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0521
Cronus(一時停止)ラストだ!!(多分):16進数を元の数字に→一文字一文字をASCIIコードを読み取って複合化の方法6解決


Cronus(一時停止)

リンク

2017/5/21(Sun) 12:47:16|NO.79909

どうも、お世話になります。
皆様のお陰でだんだんとソフトの完成が近づいてきました。
本当にありがとうございました。
最後に複合化についてです。
暗号化はpeek命令で以下の構成で出来ました。

◆暗号化の戻り…
 一文字一文字をASCIIコード→16進数に変換
◆複合化の戻り…
 16進数を元の数字に→一文字一文字をASCIIコードを読み取って複合化

しかし、複合化のスクリプトが上手くいきません(T_T)
上の複合化の戻りを実現さるにはどのようなソースを組み立てれば出来ますか?
過去ログをググっても見つかりませんでした。
教えて下さい!!

以下が暗号化と復号化(複合化出来てない)モジュール


#module #defcfunc StrEncryption str prm1 _prm1 = prm1 a_asc = "" repeat strlen( _prm1 ) a_asc = a_asc + strf("%x", peek(_prm1, cnt)) await 0 loop return a_asc #defcfunc StrComplex str prm1 _prm1 = prm1 f_asc = "" ;<ここをどうすれば複合化できるか> return f_asc #global mes StrEncryption("暗号化")



この記事に返信する


tds12

リンク

2017/5/21(Sun) 13:39:38|NO.79911

これは復号できませんね。
16進数が1桁だった場合、例えばTABが入っていた時など、2通りの読み方が出て
どちらか特定できなくなります。
まず%xのところを桁指定して固定しましょう。



Cronus

リンク

2017/5/21(Sun) 13:49:41|NO.79913

>tds12さん
考えてみれば、そうですね^^
修正します^^



Cronus

リンク

2017/5/28(Sun) 07:57:01|NO.80014


#module //与えられたint型配列から文字列を返す関数 #defcfunc ConvInt16toStr array _int,local buf,local intlen intlen = length(_int) sdim buf,intlen+1 //書き込む分+NULL文字。sdimの仕様上64byte以上になるけどネ。 repeat intlen poke buf,cnt,_int(cnt) //16進変数を文字列型変数へ書き込み。 loop poke buf,intlen,0x00 //文字列の終了を示すNULL文字の挿入。 return buf #global dim intdata,8 //0x61,0x69,0x75,0x65,0x6Fに置き換えてみて下さい。 intdata = 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38 mes ConvInt16toStr(intdata) //"12345678"と表示される……はず。
こんなスクリプトを見つけたんですが、
p1のarrayをstr型にしたいです。
教えて下さい。



tds12

リンク

2017/5/28(Sun) 22:18:15|NO.80027

おおまかにいうと、
lengthがstrlen、
_int(cnt)がpeek関数、
ってとこかな?



暇人

リンク

2017/5/29(Mon) 00:35:48|NO.80029

これを文字列対応にすれば良い

a="A" b=strf("%02x", peek(a, 0)) mes b sdim c,strlen(b)/2+1 poke c,0, int("$"+strmid(b,0,2)) mes c



Cronus

リンク

2017/5/29(Mon) 10:05:22|NO.80035

tds12さん 暇人さん
ありがとうございました!!
これで出来ました!!



ONION software Copyright 1997-2023(c) All rights reserved.