[問題] 32bit機器上輸入12 digits數字

看板C_and_CPP作者 (我是我 我不是我)時間12年前 (2012/06/18 11:52), 編輯推噓2(209)
留言11則, 5人參與, 最新討論串1/2 (看更多)
開發平台(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)

06/18 12:53, , 1F
INT64 i = (addr+11) + (addr+10)*10 .........
06/18 12:53, 1F

06/18 14:03, , 2F
樓上 他就說不支援了咩XD
06/18 14:03, 2F

06/18 14:13, , 3F
自己做大數,分成兩部份,H跟L兩種
06/18 14:13, 3F

06/18 14:14, , 4F
這個方式在mcu上的regisit也滿常用到的
06/18 14:14, 4F

06/18 14:14, , 5F
簡單來說,不支援直接64,那我就用兩個32兜起來
06/18 14:14, 5F
樓上大大,我瞭解您說的原理, 比較討厭的是因為這個數字是由使用者輸入。 並且有一些歷史包袱, 只知道user是用ASCII輸入, 所以其實一開始放在buffer裡的是0x39,0x39,0x39,......(12 Bytes) ※ 編輯: WillyLin 來自: 59.124.0.175 (06/18 16:10)

06/18 16:40, , 6F
想請教,是要用組語還是 c ??
06/18 16:40, 6F

06/18 16:47, , 7F
其實用組語或C都可以
06/18 16:47, 7F

06/18 16:54, , 8F
既然你已經知道輸入的ascii,就簡單的將他轉換成int
06/18 16:54, 8F

06/18 17:03, , 9F
這問題似乎要先定義,是要從string轉成二進位的大數,還是從
06/18 17:03, 9F

06/18 17:04, , 10F
string轉成十進位的大數,都可以做顯示與運算,但強項不同.
06/18 17:04, 10F
抱歉...沒有說清楚 讓使用者輸入的是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)

06/18 18:28, , 11F
我想到FBLD跟FISTP
06/18 18:28, 11F
文章代碼(AID): #1FtgOK5I (C_and_CPP)
文章代碼(AID): #1FtgOK5I (C_and_CPP)