我需要編寫一個C程序來將緩衝區中的壓縮十進制字段轉換爲整數值。壓縮十進制的精度是9,Scale是0.什麼是在IBM大型機C progrram中轉換它的最好方法?在Cobol中,使用Packed Decimal的格式是Comp-3 任何幫助都會被折扣。在C程序中將壓縮十進制字符數組轉換爲整數
0
A
回答
0
如果您在Zos主機上運行該程序,那麼C編譯器本機支持壓縮十進制。
谷歌爲「ZOSÇ定點小數類型」應該讓你在正確的手冊頁 它的一個簡單的:
#include <decimal.h>
decimal(9,0) mynum;
+0
感謝您的迴應。但我認爲它不會解決問題。我有一個緩衝區作爲char *需要轉換爲十進制(9,0),而我不知道是否不能這樣做:decimal(9,0)mynum = charBuffer;或十進制(9,0)mynum =(十進制(9,0))charBuffer; –
0
The one way I think it can be done, is
long long MyGetPackedDecimalValue(char* pdIn, int length)
{
// Convert packed decimal to long
const int PlusSign = 0x0C; // Plus sign
const int MinusSign = 0x0D; // Minus `enter code here`
const int NoSign = 0x0F; // Unsigned
const int DropHO = 0xFF; // AND mask to drop HO sign bits
const int GetLO = 0x0F; // Get only LO digit
long long val = 0; // Value to return
printf ("in side ****GetPDVal \n ");
for(int i=0; i < length; i++)
{
int aByte = pdIn[i] & DropHO; // Get next 2 digits & drop sign bits
if(i == length - 1)
{ // last digit?
int digit = aByte >> 4; // First get digit
val = val*10 + digit;
printf("digit= %d, val= %lld \n",
digit,
val);
int sign = aByte & GetLO; // now get sign
if (sign == MinusSign)
{
val = -val;
}
else
{
// Do we care if there is an invalid sign?
if(sign != PlusSign && sign != NoSign)
perror("SSN:Invalid Sign nibble in Packed Decimal\n");
}
}
else
{
int digit = aByte >> 4; // HO first
val = val*10 + digit;
printf("digit= %d, val= %lld \n",
digit,
val);
digit = aByte & GetLO; // now LO
val = val*10 + digit;
printf("digit= %d, val= %lld \n",
digit,
val);
}
}`enter code here`
printf ("**** coming out GetPDVal \n ");
return val;
}
相關問題
- 1. 將字符串數組轉換爲十六進制數字C
- 2. C - 將十進制數轉換爲壓縮BCD
- 3. 如何將十進制整數轉換爲單個十六進制字符? (C)
- 4. C++如何將十六進制整數轉換爲字符串?
- 5. 在存儲過程中將數字轉換爲壓縮十進制
- 6. 在JavaScript中將整數轉換爲十六進制字符串
- 7. 在Groovy中將整數轉換爲十六進制字符串
- 8. 在Ruby中將整數轉換爲十六進制字符串
- 9. Java:將字符串轉換爲壓縮的十進制
- 10. 將十六進制字符串數組轉換爲十六進制數組
- 11. 將字符數組轉換爲十六進制C
- 12. 十六進制字符串轉換爲整數在C
- 13. 在C中將字節數組轉換爲十六進制#
- 14. 如何在C++中將十六進制字符數組轉換爲字符串?
- 15. 將二進制數據轉換爲C程序的十六進制字符串
- 16. 將字符串轉換爲Python中的十進制整數
- 17. C#將十進制數轉換爲二進制的程序
- 18. 將字符串十進制轉換爲十六進制數
- 19. 將十六進制字符數組轉換爲C中的u8數組
- 20. 如何將十進制數組轉換爲C#中的字符串數組?
- 21. 在Arduino上將整數/十進制轉換爲十六進制?
- 22. 將十六進制字符串轉換爲c中的十進制數
- 23. 將字節數組轉換爲十六進制十進制字符串
- 24. 使用Python將十六進制字符串轉換爲十進制整數
- 25. C# - 字節數組轉換爲十六進制字符串
- 26. 從字節數組轉換爲字符串十六進制c#
- 27. 字符串轉換爲十六進制整數用C
- 28. 無法將字符數組轉換爲豬中的十進制
- 29. 如何將'整數'字符串轉換爲'十六進制'字符串C
- 30. 數組c轉換爲十進制
有很多有關樣Comp-3的問題。但在Comp-3中,123代表'123c',-123代表'123d'。有兩種方法 - 轉換爲字符串,然後轉換爲數字(請參閱http://stackoverflow.com/questions/4337912/how-to-convert-unpacked-decimal-back-to-comp-3)或訪問nybles(請參閱http://stackoverflow.com/questions/142972/c-convert-comp-3-packed-decimal-to-human-readable-value) –