看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 非ARM的32 bit 處理器提供的 C compiler, 不支援64bit長整數資料型態 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) None 若輸入 999,999,999,999 -->12 digits 在記憶體內先存成 addr 0x09 addr+1 0x09 ... addr+11 0x09 最後希望可以正確的轉成 addr 0xFF addr+1 0x0F addr+2 0xA5 addr+3 0xD4 addr+4 0xE8 應該怎麼做呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.0.175 ※ 編輯: WillyLin 來自: 59.124.0.175 (06/18 11:53) ※ 編輯: WillyLin 來自: 59.124.0.175 (06/18 12:52)
stupid0319:INT64 i = (addr+11) + (addr+10)*10 ......... 06/18 12:53
purincess:樓上 他就說不支援了咩XD 06/18 14:03
diabloevagto:自己做大數,分成兩部份,H跟L兩種 06/18 14:13
diabloevagto:這個方式在mcu上的regisit也滿常用到的 06/18 14:14
diabloevagto:簡單來說,不支援直接64,那我就用兩個32兜起來 06/18 14:14
樓上大大,我瞭解您說的原理, 比較討厭的是因為這個數字是由使用者輸入。 並且有一些歷史包袱, 只知道user是用ASCII輸入, 所以其實一開始放在buffer裡的是0x39,0x39,0x39,......(12 Bytes) ※ 編輯: WillyLin 來自: 59.124.0.175 (06/18 16:10)
EdisonX:想請教,是要用組語還是 c ?? 06/18 16:40
WillyLin:其實用組語或C都可以 06/18 16:47
diabloevagto:既然你已經知道輸入的ascii,就簡單的將他轉換成int 06/18 16:54
EdisonX:這問題似乎要先定義,是要從string轉成二進位的大數,還是從 06/18 17:03
EdisonX:string轉成十進位的大數,都可以做顯示與運算,但強項不同. 06/18 17:04
抱歉...沒有說清楚 讓使用者輸入的是10進位的數,最大到999,999,999,999。 原來提供輸入的函式是存成char array,所以會變成 addr 0x39 addr+1 0x39 ... addr+11 0x39 (共12 Bytes) 這也是我說的包袱的部分....沒法改 最後要輸出給另外一個I/O的必須變成 0xE8D4A50FFF (999,999,999,999的16進位) addr 0xFF addr+1 0x0F addr+2 0xA5 addr+3 0xD4 addr+4 0xE8 就是從0x39,0x39,...的char arry轉成0xE8D4...FF這邊 因為compiler不支援64 bit整數 所以不知道要怎麼轉:D ※ 編輯: WillyLin 來自: 59.124.0.175 (06/18 17:41)
stupid0319:我想到FBLD跟FISTP 06/18 18:28