在CSDN有償問一個(gè)代碼問題,結(jié)果被一個(gè)回答者給罵了!事情的起因是我在使用C#解析一個(gè)由VB6寫入的二進(jìn)制文件時(shí)發(fā)現(xiàn)解析的數(shù)據(jù)總是不完整,搗鼓了很久也沒有成功解析出來,后來發(fā)現(xiàn),原來VB6的二進(jìn)制寫入和C#的二進(jìn)制寫入有些許區(qū)別,所以,讀取方式和C#也有區(qū)別,因?yàn)榍捌诶速M(fèi)了很多時(shí)間,所以我就決定在CSDN上發(fā)帖,有償請(qǐng)教一些既懂C#又懂VB6的人來解決問題。
CSDN的問答版塊是可以發(fā)布有償求助帖的,在此之前我其實(shí)已經(jīng)通過AI大致找到了解決問題的方向,但是所有AI都不能給我細(xì)致且正確的回答,加上我工作比較緊張,我就選擇了暫時(shí)放下這塊的邏輯,在CSDN上發(fā)了一個(gè)有償帖子以后就去干別的事情了!
很快,一大堆AI回答就全部擠上了我發(fā)布的帖子,我看他們的回答幾乎都是跟我之前問AI的回答是差不多的!其中,有一名網(wǎng)友問我可以不可以遠(yuǎn)程調(diào)試,于是我就答應(yīng)了!
最后,這個(gè)網(wǎng)友通過遠(yuǎn)程調(diào)試幫我分析了這個(gè)由VB6生成的二進(jìn)制文件,發(fā)現(xiàn)這個(gè)二進(jìn)制文件的字符串長(zhǎng)度不是固定的,而如果通過C#的Marshal對(duì)象去解析這個(gè)由VB6生成的二進(jìn)制文件并轉(zhuǎn)換成結(jié)構(gòu)體的話,是需要指定對(duì)象長(zhǎng)度的,因此,直接使用Marshal對(duì)象不可行。
這其實(shí)跟我之前問AI得到的答復(fù)差不多,只不過他說得更加詳細(xì)一些,他發(fā)現(xiàn)這個(gè)二進(jìn)制文件大部分內(nèi)容的結(jié)尾都是以\0結(jié)束的,因此,給我提供的思路就是把所有字段以\0進(jìn)行分割,最后按照順序一個(gè)一個(gè)值得去讀取!
其實(shí),他給我的解決方案我最開始就已經(jīng)注意到了,并且也嘗試過,但是,這個(gè)二進(jìn)制文件里面還有一個(gè)特殊的地方,那就是有三個(gè)字符串字段并不是以\0結(jié)束的,并且,因?yàn)樽侄伍L(zhǎng)度是可變的,因此,會(huì)導(dǎo)致字節(jié)錯(cuò)位,盡管其他字段都可以使用\0的方式分割出來,但是這三個(gè)字符串字段的分割卻成了一個(gè)問題。
此時(shí),我不知道這是不是最終方案,但是目前的方案對(duì)于我來說是解決不了問題的。
可是,此時(shí)已經(jīng)過去了一天時(shí)間,我的帖子已經(jīng)被大量的AI回答給占據(jù)了,我一個(gè)一個(gè)看了以后,發(fā)現(xiàn)所有回答都不在點(diǎn)子上!所以,為了讓問題繼續(xù)得到解決,我又重新發(fā)了一個(gè)有償帖子,并且注明了需要遠(yuǎn)程解決問題,不接受AI回答,原先的帖子還繼續(xù)放在那沒有動(dòng)!
但沒過多久,就有一個(gè)網(wǎng)友說可以幫我遠(yuǎn)程看,也就是這個(gè)人幫我解決了問題。
他告訴我解決問題的思路很簡(jiǎn)單,那就是那三個(gè)字符串對(duì)象雖然沒有以\0結(jié)尾,但是在每個(gè)字符串前面其實(shí)都是有一個(gè)長(zhǎng)度標(biāo)記的。
其實(shí)只需要使用C#的BinaryReader對(duì)象去按照順序一個(gè)一個(gè)讀取值就可以,但是,區(qū)別就是,當(dāng)讀取到字符串值的時(shí)候,需要先獲取下字符串值的長(zhǎng)度,然后截取byte值,最終將byte值轉(zhuǎn)換成字符串類型即可。對(duì)于其他類型的值,只需要使用BinaryReader對(duì)象的ReadDouble、ReadInt32、ReadInt16、ReadSingle等一個(gè)一個(gè)按照字段在結(jié)構(gòu)體中的順序讀就行。
其實(shí)這個(gè)方法我之前也是知道的,只不過不知道的是字符串前面竟然還有一個(gè)表示長(zhǎng)度的標(biāo)記。雖然這個(gè)標(biāo)記我以前早就注意到了,但是問了某個(gè)AI以后,這個(gè)AI的解釋是,這只是二進(jìn)制文件的開始標(biāo)記而已,就像\0是結(jié)束標(biāo)記一樣,現(xiàn)在想想,這個(gè)AI誤導(dǎo)我很嚴(yán)重。
但話說回來,第二個(gè)網(wǎng)友跟第一個(gè)網(wǎng)友不一樣的地方就在于,第二個(gè)網(wǎng)友在遠(yuǎn)程搗鼓了一圈以后,表示想要分析我給他提供的二進(jìn)制文件可能需要一段時(shí)間,我也不想浪費(fèi)時(shí)間,于是問他,能不能直接編寫一個(gè)C#解析這個(gè)二進(jìn)制文件的代碼給我,他答應(yīng)了,但是要額外增加報(bào)酬,我覺得這個(gè)要求不過分,誰的時(shí)間都是時(shí)間,一商量之下,以100元成交,并且,問題解決后,之前發(fā)的有償帖子的收入也給他。
大約一個(gè)小時(shí)左右吧,他就直接扔給我一個(gè)C#解析這個(gè)二進(jìn)制文件的代碼給我,我看了下邏輯,沒有試我就感覺到了他寫的肯定是對(duì)的!最后,問題成功解決!
問題解決后,我選擇對(duì)我之前發(fā)的帖子進(jìn)行結(jié)貼,第二個(gè)帖子的收入我給了第二個(gè)網(wǎng)友,但是第一個(gè)帖子的收入讓我犯了難。
主要是因?yàn)榈谝粋€(gè)帖子的那個(gè)回答者其實(shí)并沒有解決掉我的問題,或許他說的是我沒理解清楚,但他也沒有像第二位回答者那樣直接給我代碼,我也考慮過他“沒有功勞也有苦勞”,但是,細(xì)想之下,如果所有人不管能不能解決我的問題,我都給報(bào)酬的話,那也沒有這個(gè)道理,加之這個(gè)問題本身就不復(fù)雜,我也付出了一定的酬勞給第二個(gè)網(wǎng)友,所以我選擇了“無滿意回答結(jié)貼”,這就意味著這個(gè)帖子的傭金將會(huì)原路返回到我的錢包里。
本身,我以為這件事情就這么過去了,因?yàn)槲以?jīng)也是CSDN問答版塊的答主,幫人解決問題別人不選擇你是很正常的事情,但是,誰知道我卻收到了第一個(gè)幫我解決問題的人的指責(zé),他指責(zé)我選擇了“無滿意回答結(jié)貼”,導(dǎo)致他花了時(shí)間但是卻一點(diǎn)報(bào)酬也沒有得到!
結(jié)語
我覺得這個(gè)事情的邏輯很簡(jiǎn)單,那就是解決問題的人就該拿到他應(yīng)得的,這就跟職場(chǎng)一樣,如果只考慮“苦勞”不考慮實(shí)際結(jié)果,我估計(jì)老板也不答應(yīng)吧!
但是,這個(gè)事情讓我糾結(jié)的點(diǎn)也很簡(jiǎn)單,那就是相比AI,第一個(gè)人的確也付出了自己的時(shí)間,所以站在他的角度上,我也是不會(huì)高興的,所以,他的心情我可以理解。所以,我在仔細(xì)斟酌以后,決定還是把第一個(gè)帖子的酬勞發(fā)給他,并向他解釋下我這么做的理由。
但是,讓我沒想到的是,他竟然給我拉黑了,這里得說下,當(dāng)問題解決以后我并沒有繼續(xù)關(guān)注帖子的事情,直到四天以后,我才發(fā)現(xiàn)我有一條私信,一看之下才發(fā)現(xiàn)是他發(fā)給我的,言語帶著指責(zé),并且還說了不好聽的話!
這就讓我難受了!
不知道對(duì)于此事,您怎么看呢?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.