我需要做一個128位GUID的字符串表示形式,代表8位塊而不是4位;所以像基地256:/爲什麼?因爲我需要縮短GUID的字符串十六進制表示的長度,所以它太長了。我有一個最大數組大小爲31加NULL結束符。此外,字符值不能從0x000到0x01F ....這讓我很頭疼,但我知道它可以完成。如何以最好和最安全的方式提出任何建議?現在我只是用memcpy和添加0x01F,但數字在我腦海中不斷彈起......不能釘住他們!我必須相互轉換:\Base 256 GUID字符串表示w /字符偏移量0x01F
回答
嘗試使用base64編碼:它爲每個字符打包6位,並且仍然便攜。您將需要22個字符以便攜方式存儲128位GUID。
這會在某個地方有所作爲嗎? 8位太多(不便攜)?關於如何正確處理轉換的建議?我避免了字編碼,因爲它類似於相反的o〜o – 2010-06-22 09:24:08
您需要0來獲取與字符串sentinel值的C++結尾衝突的8位,所以您最終得到一個字節數組。如果你想繼續使用字符串,你還必須小心,在使用不同的代碼頁時不會翻譯它們。另外您的要求狀態00-1F中沒有組合不被使用。 Base64在這些約束條件下的性能差不多。 – 2010-06-22 09:36:58
「......你還必須小心,在使用不同的代碼頁時他們沒有被翻譯......」 - 你呢?但是這隻有當人們試圖通過視覺來閱讀和複製該死的東西或者我錯過了某些東西時才真正相關在課堂上我從未上過學?我不認爲有人會閱讀加密文件....最有可能!我有點擔心突然改變的位/字節順序等待計算機和我編寫的代碼編譯進行轉換。 o.o – 2010-06-22 09:47:16
讓OLESTR首先將其轉換爲帶有IIDFromString()
的GUID,然後使用base64 as user Peter Tillemans suggests。
好吧...我接受它我加入'\ 0'使它成爲132位,因爲6x22很好132不是128,這就是他所說的「你需要0到得到與字符串sentinel值的C++端衝突的8位,所以你最終得到一個字節數組。「我也認爲我會一點一點地複製,在這種情況下,我會將它複製到較低字節的高六位?爲了照顧字符偏移.... – 2010-06-22 10:21:56
- 1. 非法字符串偏移量和未初始化字符串
- 2. 非法字符串偏移量SEO
- 3. 非法字符串偏移「數量」Wordpress
- 4. 獲取字符串的偏移量
- 5. WooCommerce/WordPress非法字符串偏移量
- 6. Wordpress非法字符串偏移量
- 7. ActiveSupport :: TimeZone偏移字符串列表
- 8. codeigniter - 未初始化的字符串偏移量:0和非法字符串偏移量
- 9. 差B/W字符串和字符串
- 10. php獲取兩個字符串之間的字符串與偏移量
- 11. 字符串中的正則表達式偏移量
- 12. 注意:初始化的字符串偏移:未初始化字符串偏移量:1
- 13. .Net查找字符串中的所有字偏移量
- 14. 中的Base-64字符串
- 15. 修復「非法字符串偏移」?
- 16. 非法字符串偏移「大小」
- 17. Python的格式字符串與偏移
- 18. 非法字符串偏移codeigniter
- 19. 非法字符串偏移sqlite
- 20. php - array - 非法字符串偏移
- 21. 非法字符串偏移「名稱」laravel
- 22. 警告:非法字符串偏移「根」
- 23. 非法字符串偏移'錯誤'
- 24. PDO和Foreach(非法字符串偏移)
- 25. matplotlib格式偏移字符串
- 26. 查找字符串的字符串w /最低頻字符
- 27. Guid vs隨機字符串
- 28. 非法字符'X'在偏移量37
- 29. 限制一個字符串256字節
- 30. 如何在C#中表示(字符串,字符串[],字符串[])#
存儲源GUID的確切程度? – sharptooth 2010-06-22 09:20:25
作爲OLESTR o.o – 2010-06-22 09:22:48